Self-hosted home inventory for everything you own.
Attic is an open-source home inventory application for individuals and households. Catalog everything you own—from appliances and tools to electronics, books, games, and furniture—and keep its location, condition, purchase information, warranty, photos, receipts, and manuals together.
Attic mirrors the way a home is organized with nested locations such as rooms, shelves, cupboards, and boxes. Categories and custom fields capture the right details for each kind of belonging, while collections group related items without changing where they are stored. It works for a focused collection or an entire household inventory.
Home Inventory
- Full CRUD with custom attributes per category (strings, numbers, booleans, dates, dropdowns)
- Hierarchical categories and locations; child categories inherit their ancestors' custom fields
- Condition tracking (new, used, damaged, or custom states)
- Warranty expiration monitoring on the dashboard
- File attachments for invoices, manuals, and photos
- Shared household collections with names, descriptions, and icons (e.g. PS5 games, books, furniture). Assign assets to any number of collections from the asset form and filter inventory by collection. Deleting a collection preserves its assets.
- Purchase dates, prices, and notes with dashboard value summaries
Search & Discovery
- Full-text search across asset names and descriptions
- Filter by category, location, and condition
- Category filters include assets assigned to descendant categories
Smart Integrations
- Automated imports from Google Books, TMDB (movies and TV), BoardGameGeek, and IGDB (video games)
- Metadata and cover images populated automatically
- Plugin system for adding new import sources
Google Books works without credentials, but Google may apply a low shared quota to unauthenticated
requests. Set ATTIC_GOOGLE_BOOKS_API_KEY to a Google Books API key for reliable imports in a
self-hosted or shared deployment. The key is sent only to Google Books API requests.
IGDB imports require ATTIC_IGDB_CLIENT_ID and ATTIC_IGDB_CLIENT_SECRET from a
Twitch application. Attic exchanges these credentials for a
short-lived access token and keeps the token in memory only.
Self-Hosted & Secure
- Docker-based deployment with complete data ownership
- Local password authentication and OIDC/SSO (Keycloak compatible)
- REST API with Swagger documentation
- Local or S3-compatible storage for attachments
- Dark mode with mobile-responsive UI
- Docker & Docker Compose
- Go 1.27+
- Bun 1.1+
- Make
-
Clone the repository and start infrastructure:
git clone git@github.com:lmmendes/attic.git cd attic docker compose up -d -
Run database migrations:
make migrate-up
-
Start the backend:
cd backend go run ./cmd/server -
Start the frontend (new terminal):
cd frontend bun install bun run dev -
Open the app:
Service URL Frontend http://localhost:3000 Backend API http://localhost:8080 API Docs http://localhost:8080/api/docs Keycloak http://localhost:8180 Default test credentials:
testuser/testpassword
The Playwright suite exercises real browser workflows against a running Attic instance, including login, category/attribute handoffs, and feature settings.
cd frontend
bunx playwright install chromium
bun run test:e2eThe local suite targets the Nuxt development server at http://127.0.0.1:3000.
Set E2E_BASE_URL when testing another running instance.
GitHub Actions runs the same suite against the compiled application and a disposable PostgreSQL database on every pull request.
cp .env.example .env
# Edit .env with your production values
docker compose -f docker-compose.prod.yml up -d --build
docker compose -f docker-compose.prod.yml exec backend \
/app/migrate -path /migrations -database "$DATABASE_URL" upFor more details, visit getattic.dev.
| Component | Technology |
|---|---|
| Backend | Go 1.27, Chi router, PostgreSQL |
| Frontend | Nuxt 4, Nuxt UI 4, Tailwind CSS |
| Auth | Local passwords or OIDC/SSO |
| Storage | S3-compatible (AWS S3, MinIO, LocalStack) |