- Set up basic better-auth configuration - Implement auth controller with route handling - Create authentication middleware - Update TypeScript types for better compatibility - Update Drizzle ORM to latest version (0.43.1) - Add @hono/zod-validator for request validation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> |
||
---|---|---|
backend | ||
docs | ||
.gitignore | ||
CLAUDE.md | ||
devenv.lock | ||
devenv.nix | ||
devenv.yaml | ||
docker-compose.yml | ||
README.md |
Splitwise Application
A Splitwise-style expense-splitting application with double-entry bookkeeping and multi-currency support.
Getting Started with Docker
The application is containerized using Docker, making it easy to set up and run locally.
Prerequisites
- Docker
- Docker Compose
Running the Application
-
Clone the repository:
git clone <repository-url> cd splitwise
-
Start the database and backend services:
docker-compose up -d
-
Generate and run database migrations:
# Generate migrations from schema docker-compose run backend bun run db:generate # Run migrations docker-compose run --profile migration migration
-
Access the application:
- Backend API: http://localhost:3000
- Drizzle Studio (database UI): http://localhost:4000
Useful Commands
Start specific services:
# Start only the database
docker-compose up -d postgres
# Start Drizzle Studio for database management
docker-compose --profile studio up drizzle-studio
# Run migrations
docker-compose --profile migration up migration
View logs:
# All services
docker-compose logs -f
# Specific service
docker-compose logs -f backend
Rebuild containers:
docker-compose build
Stop all services:
docker-compose down
Reset everything (including database volume):
docker-compose down -v
Development
Project Structure
/backend
- Backend API built with Bun, Hono, and Drizzle ORM/frontend
- Frontend application (to be implemented)/docs
- Project documentation
Tech Stack
Backend
- Runtime: Bun
- Framework: Hono (TypeScript-first web framework)
- Database: PostgreSQL
- ORM: Drizzle
- Authentication: better-auth
- Validation: Zod
Frontend (planned)
- Framework: React with TypeScript
- Build Tool: Vite
- Styling: TailwindCSS with Shadcn UI
- State Management: Zustand
- Data Fetching: TanStack Query