A modern project name manager built with Next.js and Convex. Manage creative project names, track project metadata, and maintain a pool of available names for future ideas.
- Track project names with state management (available, considering, assigned)
- Organize projects by status (idea, active, paused, archived)
- Real-time updates via Convex subscriptions
- GitHub repo and production URL tracking
- Filter, search, and sort with instant updates
- Mobile-responsive interface
- Frontend: Next.js 16 (App Router), React 19, TypeScript
- Backend: Convex (serverless database + realtime API)
- UI: shadcn/ui (Radix), Tailwind CSS 4
- Forms: React Hook Form + Zod validation
- Tables: TanStack React Table
- Package Manager: pnpm 10.17.1
- Node.js 18+ (tested with v22.15)
- pnpm 10+ (or npm/yarn)
- Convex account (free tier available at convex.dev)
git clone <your-repo-url>
cd powderpnpm install# Initialize Convex dev environment (creates .env.local automatically)
pnpm dev:convexThis will:
- Prompt you to log in to Convex (or create an account)
- Create a new Convex project
- Generate
.env.localwithNEXT_PUBLIC_CONVEX_URL - Deploy your schema and functions
Once complete, press Ctrl+C to stop.
pnpm devThis starts both Next.js and Convex concurrently. Open http://localhost:3000 to see the app.
# Development
pnpm dev # Start both Next.js and Convex concurrently (port 3000)
pnpm dev:next # Start only Next.js dev server
pnpm dev:convex # Start only Convex dev mode
# Production
pnpm build # Production build
pnpm start # Start production server
pnpm lint # Run ESLint
# Deployment
pnpm convex:deploy # Deploy to Convex productionpowder/
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── page.tsx # Dashboard (Server Component)
│ │ └── projects/ # Project CRUD pages
│ ├── components/
│ │ ├── ui/ # shadcn/ui components
│ │ ├── project-form.tsx
│ │ ├── project-table.tsx
│ │ └── ... # Other feature components
│ └── lib/
│ ├── convex.ts # ConvexReactClient singleton
│ ├── validation.ts # Zod schemas
│ └── utils.ts # Utilities (cn, etc.)
│
└── convex/ # Backend (Convex)
├── schema.ts # Database schema
├── names.ts # NameManager module
├── projects.ts # ProjectManager module
└── projectNameLinker.ts # Cross-table linking
Three-module backend (NameManager, ProjectManager, ProjectNameLinker) with atomic cross-table operations. See CLAUDE.md for detailed architecture and database schema.
- Push your code to GitHub
- Connect repository to Vercel
- Set environment variable:
NEXT_PUBLIC_CONVEX_URL(from Convex production deployment)
- Deploy
pnpm convex:deployCopy the production URL to Vercel environment variables.
This is a personal project, but suggestions and improvements are welcome! See CLAUDE.md for coding conventions and architecture decisions.
ISC