2e1072fa0f25a863ff473073542683511bd4d2ef
- 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>
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
Description
Languages
TypeScript
95.8%
Dockerfile
3.1%
Nix
1.1%