Know where everything is.
Compass is an offline-first asset management platform that maps your digital inventory to real-world locations.
Unlike traditional inventory software that answers “Do I own this?”, Compass answers “Where is it?”
The first vertical is Magic: The Gathering collections. The architecture is built for future modules — tools, jewelry, electronics, home inventory, collectibles, and more.
Bridge digital inventories and physical storage with an offline-first, NFC-aware location graph. See docs/vision.md.
compass/
├── apps/
│ ├── web/ # Next.js 15 marketing site
│ └── mobile/ # Flutter app (scaffold)
├── packages/
│ ├── api/ # Shared types + API client
│ ├── branding/ # Brand tokens & copy
│ └── ui/ # Shared UI primitives
├── docs/ # Vision, architecture, roadmap, branding
├── .github/ # CI & templates
├── koyeb.yaml # Koyeb deployment config
└── vercel.json # Vercel deployment config
| Layer | Choice |
|---|---|
| Monorepo | pnpm workspaces + Turborepo |
| Web | Next.js 15, React 19, TypeScript |
| Styling | Tailwind CSS, shadcn/ui, Framer Motion |
| Icons | Lucide |
| Fonts | Geist, Inter, Space Grotesk |
| Mobile | Flutter (scaffold) |
| Deploy | Vercel, Koyeb (Docker) |
- Node.js 20+
- pnpm 9+
pnpm installpnpm devOpen http://localhost:3000.
pnpm build # Build all packages / apps
pnpm lint # Lint
pnpm typecheck # TypeScript checks
pnpm format # PrettierHigh level:
- Foundation — monorepo, marketing site, shared packages
- MTG MVP — locations, search, NFC, imports
- Platform — additional modules, sync, web app surfaces
Details: docs/roadmap.md
| Branch | Role |
|---|---|
dev |
Active development (CI runs here) |
public |
Default / production-facing |
Site: getcompass.space
This is a pnpm monorepo. The lockfile (pnpm-lock.yaml) lives at the repository root. Deployments must build from the root (or install from the root) so the lockfile is visible.
- Import the GitHub repository (
publicbranch). - Keep Root Directory as the repository root (
.) — do not set it toapps/webalone unless you also install from the monorepo root. - Framework preset: Next.js (or Other + custom commands).
- Install command:
pnpm install - Build command:
pnpm --filter @compass/web build - Set env
NEXT_PUBLIC_SITE_URLtohttps://getcompass.space.
Root vercel.json already encodes these commands.
If you prefer Root Directory apps/web, enable including files outside the root directory and use:
- Install:
cd ../.. && pnpm install - Build:
cd ../.. && pnpm --filter @compass/web build
The “Missing lockfile” error happens when Work directory is set to apps/web with the buildpack builder — Koyeb then hides the root pnpm-lock.yaml.
Use the Docker builder from the repo root:
- Create/update the service from this repository (
publicbranch). - Builder: Dockerfile (not buildpack).
- Dockerfile path:
Dockerfile(repo root). - Docker context:
.(repo root). - Leave Work directory empty / unset (must be the repository root).
- Port:
3000. - Env:
NEXT_PUBLIC_SITE_URL=https://getcompass.space.
koyeb.yaml matches this setup.
# Local Docker smoke test
docker build -t compass-web .
docker run --rm -p 3000:3000 compass-web- Branch from
dev. - Use focused commits and descriptive PR titles.
- Ensure
pnpm lint,pnpm typecheck, andpnpm buildpass. - Open a PR into
devusing the template in.github/. - Promote stable work from
devtopublicfor production.
Bug reports welcome via GitHub Issues.
MIT © Tony