idea.dump is a minimalist idea-capturing web application with a dark, brutalist aesthetic. Users can quickly jot down thoughts, view them in a card grid, and delete them. It's a simple CRUD app: create ideas, list them, and delete them. The app uses a monorepo structure with a React frontend and Express backend, backed by PostgreSQL.
Preferred communication style: Simple, everyday language.
The project is organized into three main directories:
client/— React frontend (Vite-powered SPA)server/— Express backend (API + static file serving)shared/— Code shared between frontend and backend (schema, route definitions, types)
- Framework: React with TypeScript
- Bundler: Vite (config in
vite.config.ts) - Routing: Wouter (lightweight client-side routing)
- State/Data Fetching: TanStack React Query for server state management
- UI Components: shadcn/ui (new-york style) with Radix UI primitives, stored in
client/src/components/ui/ - Styling: Tailwind CSS with CSS variables for theming. Strict dark mode only. Uses Inter and JetBrains Mono fonts.
- Animations: Framer Motion for card entry/exit animations
- Path aliases:
@/maps toclient/src/,@shared/maps toshared/
- Framework: Express 5 on Node.js, run via
tsx - Entry point:
server/index.tscreates an HTTP server - Routes: Defined in
server/routes.ts, registered against the Express app - Storage layer:
server/storage.tsprovides aDatabaseStorageclass implementingIStorageinterface. This abstraction makes it easy to swap storage implementations. - Dev mode: Vite dev server middleware is attached for HMR (
server/vite.ts) - Production: Static files served from
dist/public(server/static.ts)
schema.ts: Drizzle ORM table definitions and Zod validation schemas (usingdrizzle-zod). Single table:ideaswithid,content, andcreatedAt.routes.ts: API contract definitions with paths, methods, input schemas, and response schemas. Both client and server import from here to stay in sync.
- ORM: Drizzle ORM with PostgreSQL dialect
- Driver:
pg(node-postgres) Pool - Connection: Via
DATABASE_URLenvironment variable (required) - Schema push:
npm run db:pushusesdrizzle-kit pushto sync schema to database - Migrations: Output to
./migrationsdirectory
| Method | Path | Description |
|---|---|---|
| GET | /api/ideas |
List all ideas (newest first) |
| POST | /api/ideas |
Create a new idea (body: { content: string }) |
| DELETE | /api/ideas/:id |
Delete an idea by ID |
The server seeds 3 default ideas if the database is empty on startup.
- Dev:
npm run dev— runstsx server/index.tswith Vite middleware for HMR - Build:
npm run build— runsscript/build.tswhich uses Vite to build the client and esbuild to bundle the server intodist/index.cjs - Start:
npm start— runs the production build fromdist/index.cjs
- PostgreSQL — Required. Connection string must be in
DATABASE_URLenvironment variable. Usesconnect-pg-simplefor session storage support (though sessions aren't actively used yet).
- drizzle-orm + drizzle-kit — Database ORM and migration tooling
- express (v5) — HTTP server
- @tanstack/react-query — Client-side data fetching and caching
- framer-motion — Animations
- zod + drizzle-zod — Runtime validation and schema generation
- wouter — Client-side routing
- shadcn/ui components (Radix UI primitives) — Full component library installed
- date-fns — Date formatting (relative timestamps on cards)
- lucide-react — Icons
@replit/vite-plugin-runtime-error-modal— Always active@replit/vite-plugin-cartographerand@replit/vite-plugin-dev-banner— Active in dev mode on Replit only