Skip to content

Aidesu/project-01

Repository files navigation

StatEko

Personal finance management, clear and multilingual.

Monthly budgets, savings goals, analytics and market tracking — all in a modern, responsive web app.

Next.js React TypeScript Prisma PostgreSQL Tailwind CSS License Built with Claude Code


📑 Table of Contents


🔎 Overview

StatEko is a budgeting web app that helps you take back control of your finances: build your budgets month by month, track your savings goals, visualize your spending trends, and keep an eye on the markets. The interface is fully translated (🇬🇧 / 🇫🇷 / 🇯🇵) and authentication is secure.

💡 This README is designed as a reusable template — adapt the name, badges, and sections for your other projects.


✨ Features

Module Description
🔐 Authentication Email + password sign-up / sign-in (bcrypt hashing), sessions handled by Auth.js v5
💰 Budgets Detailed monthly budgets broken down by category (income, fixed costs, variable expenses, savings)
🎯 Goals Typed savings goals (travel, car, home, emergency…) with progress tracking and pinning
📈 Analytics Monthly overview, expense breakdown, and trends powered by ECharts
🪙 Markets Asset tracking with real-time prices (polled every 5 s)
🌍 Multilingual Per-language routing (/[lang]) — English, French, Japanese
🎨 Modern UI Responsive design with Tailwind CSS 4 and FontAwesome icons

🛠 Tech Stack

Area Technologies
Framework Next.js 16 (App Router, Server Actions, route groups)
UI React 19, Tailwind CSS 4, FontAwesome
Language TypeScript 5
Database PostgreSQL 17 via Prisma 6
Authentication Auth.js v5 (next-auth) + @auth/prisma-adapter + bcryptjs
Visualization Apache ECharts 6
Validation Zod 4
Infra (dev) Docker Compose (PostgreSQL)

✅ Prerequisites

  • Node.js 20.9+ (required by Next.js 16)
  • Docker & Docker Compose (for the local PostgreSQL database)
  • npm (or yarn / pnpm / bun)

🚀 Installation

# 1. Clone the repository
git clone https://github.com/Aidesu/project-01.git
cd project-01

# 2. Install dependencies
npm install

# 3. Configure your environment
cp .env.example .env   # then fill in the variables (see below)

# 4. Start the PostgreSQL database
docker compose up -d

# 5. Apply Prisma migrations
npx prisma migrate dev

# 6. Start the development server
npm run dev

The app is then available at http://localhost:3000.


🔑 Environment Variables

Create a .env file at the root using the following keys:

Variable Description Example
DATABASE_URL PostgreSQL connection string postgresql://user:password@localhost:5432/budget_db
AUTH_SECRET JWT session signing secret generated via openssl rand -base64 32
AUTH_TRUST_HOST Trusts the host in dev (useful behind a proxy / WSL) true

⚠️ The .env file should never be committed — it is already listed in .gitignore.


📜 Available Scripts

Command Action
npm run dev Starts the development server
npm run build Builds the app for production
npm run start Runs the built app
npm run lint Lints the code with ESLint

📁 Project Structure

src/
├── app/
│   ├── (auth)/            # Sign-in / sign-up pages
│   ├── (main)/[lang]/     # Authenticated app, routed by language
│   │   ├── analytics/     #   Dashboards & charts
│   │   ├── budgets/       #   Budget management
│   │   ├── goals/         #   Savings goals
│   │   ├── markets/       #   Market tracking
│   │   └── accounts/      #   Account settings
│   ├── (public)/          # Landing, about, terms
│   ├── actions/           # Server Actions (auth, budget, goal…)
│   └── api/               # Route handlers (auth, markets)
├── components/            # UI components (layouts, forms, graphics, ui…)
├── lib/
│   ├── i18n/              # Translation dictionaries (en, fr, ja)
│   └── validation/        # Zod schemas
├── services/             # Business logic (analytics, goal, market)
└── types/                # Shared types
prisma/
├── schema.prisma         # Data model
└── migrations/           # Migration history

🌍 Internationalization

The app is translated into English, French, and Japanese. The language is carried by the /[lang] URL segment (e.g. /fr/budgets). Translations live in src/lib/i18n/dictionaries/ — adding a language is as simple as creating a new JSON file and registering it in dictionaries.ts.


📄 License

Released under the MIT License. See the LICENSE file for details.


created by Carla Deafiaa

About

Personal finance management, clear and multilingual

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages