A fullstack expense-sharing application built as a practical case for Spiko's software engineering interviews.
This project is a "Tricount" application (similar to Tricount or Splitwise) that allows users to track shared expenses and settle debts using EUTBL tokens (Spiko tokens).
- Sign up with email/password
- Sign in
- Log out
- Create a new tricount instance (expense group)
- Invite users to join a tricount
- Add expenses to a tricount
- Specify who paid and how the expense should be split
- View expense history
- Automatic computation of refunds/balances between participants
- Settle debts using EUTBL tokens (Spiko tokens)
This is an Nx monorepo containing:
- App (
app/): React frontend application - Server (
server/): Node.js backend API built with esbuild - Database: PostgreSQL 16
The fastest way to get started is using GitHub Codespaces:
- Click the "Open in GitHub Codespaces" badge above
- Wait for the environment to build (2-3 minutes on first launch)
- Once ready, run
pnpm nx run-many -t devto start the development servers
Everything is pre-configured: Node.js, pnpm, PostgreSQL, and VS Code extensions.
- Node.js LTS (v24.x)
- pnpm
- Docker (for PostgreSQL database)
Start the PostgreSQL database:
docker compose up -dThis starts a PostgreSQL instance with:
- Host: localhost
- Port: 5432
- Database: spiko_tricount
- User: postgres
- Password: postgres
To stop the database:
docker compose downpnpm installRun all projects in watch mode:
pnpm nx run-many -t devThis starts:
- App: http://localhost:4200 (React frontend)
- Server: http://localhost:3000 (API backend)
Run a specific project:
pnpm nx serve servernpx nx run-many -t buildnpx nx run-many -t testnpx nx run-many -t lintapp/ # React frontend application
server/ # Node.js backend API (DDD architecture)
src/
domain/ # Business entities, repository interfaces
application/ # Use cases, application services
infrastructure/ # Database, repositories, migrations
presentation/ # HTTP handlers, API routes
packages/ # Shared packages
libs/ # Shared libraries
| Command | Description |
|---|---|
npx nx graph |
Visualize project dependencies |
npx nx affected -t build |
Build only affected projects |
npx nx affected -t test |
Test only affected projects |
Please refer to the instructions provided by your interviewer for specific requirements and evaluation criteria.
MIT