Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
name: CI

on:
push:
branches: [master]
pull_request:

permissions:
contents: read

jobs:
test-and-build:
runs-on: ubuntu-latest
steps:
- name: Repository auschecken
uses: actions/checkout@v4

- name: Node.js einrichten
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm

- name: Abhängigkeiten installieren
run: npm ci

- name: Tests ausführen
run: npm run test:run

- name: Produktions-Build erstellen
run: npm run build
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@

# production
/build
/dist

# misc
.DS_Store
Expand All @@ -22,4 +23,3 @@
npm-debug.log*
yarn-debug.log*
yarn-error.log*

1 change: 1 addition & 0 deletions .nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
22
63 changes: 47 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,24 +1,55 @@
# Expensee 💰

**Expensee** is a modern, user-friendly expense tracking application designed to help users manage their daily finances with ease. This project was developed as the final graduation project for the **Supercode Bootcamp**.
Expensee is a responsive expense tracker created as a SuperCode bootcamp graduation project. Users can authenticate with Firebase, record transactions, review recent activity, and see category totals in a doughnut chart.

## 🚀 Features
## Features

- **User Authentication:** Secure sign-up and login via Firebase Authentication.
- **Expense Management:** Add, edit, and delete expenses to keep track of your spending.
- **Real-time Updates:** Data is synchronized in real-time using Firebase Firestore.
- **Responsive Design:** Fully optimized for mobile and desktop devices.
- **Data Visualization:** (Falls vorhanden, z.B. Charts) Visual overview of monthly spending.
- Email/password registration and login
- Google, GitHub, and Twitter sign-in through Firebase Authentication
- Real-time transaction storage with Cloud Firestore
- Income, expense, saving, and miscellaneous category totals
- Responsive overview and chart views

## 🛠️ Tech Stack
## Tech stack

- **Frontend:** [React.js](https://reactjs.org/)
- **Backend/Database:** [Firebase](https://firebase.google.com/) (Firestore & Auth)
- **Styling:** SCSS / CSS
- **Deployment:** (z.B. Vercel / Netlify / Firebase Hosting)
- React 19 and React Router 7
- Vite 8
- Firebase 12
- Chart.js 4 with react-chartjs-2
- Sass
- Vitest and Testing Library

## 📦 Installation & Setup
## Local setup

1. **Clone the repository:**
```bash
git clone [https://github.com/jonasermert/expensee.git](https://github.com/jonasermert/expensee.git)
Prerequisites: Node.js 20.19 or newer and npm. The repository includes an `.nvmrc` for Node.js 22.

```bash
git clone https://github.com/jonasermert/expensee.git
cd expensee
nvm use
npm ci
npm run dev
```

Open the local URL printed by Vite, normally `http://localhost:5173`.

The Firebase project must allow the hostname used to run the app. Authentication providers also need to be enabled in the Firebase console before their corresponding login buttons work.

## Quality checks

```bash
npm run test:run
npm run build
npm audit
```

GitHub Actions executes the test suite and production build for pushes to `master` and for pull requests.

## Production build

```bash
npm run build
npm run preview
```

The production files are written to `dist/`. When deploying, configure the host to serve `index.html` as the fallback for client-side routes. The existing `public/_redirects` file handles this on compatible hosts such as Netlify.
20 changes: 20 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!doctype html>
<html lang="de">
<head>
<meta charset="UTF-8" />
<link rel="icon" href="/favicon.ico" />
<link rel="manifest" href="/manifest.json" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta name="theme-color" content="#2b2d5b" />
<meta
name="description"
content="Expensee – Einnahmen und Ausgaben übersichtlich verwalten"
/>
<title>Expensee</title>
</head>
<body>
<noscript>Expensee benötigt JavaScript.</noscript>
<div id="root"></div>
<script type="module" src="/src/main.jsx"></script>
</body>
</html>
Loading
Loading