A mobile customer app design (react) that allows user registration, login, view balance, deposit, withdraw, and receive push notifications for relevant events and its full backend
# Jambo Credit Customer
This repository contains the source code for the Jambo Credit Customer application, which is a simple system for managing savings accounts with an immutable, append only architecture.
## Project Overview
The project is divided into two main parts:
- **`backend`**: A Node.js application built with Fastify that provides a secure and robust API for managing user accounts, devices, and transactions.
- **`frontend`**: A modern web application built with React and Vite that provides a user friendly interface for interacting with the backend API.
## Tech Stack
### Backend
- **Runtime/Framework**: Node.js with Fastify
- **Database**: PostgreSQL
- **ORM**: Drizzle ORM
- **Authentication**: jose for JWT handling
- **Validation**: Zod
### Frontend
- **Framework**: React
- **Build Tool**: Vite
- **Routing**: TanStack Router
- **Data Fetching**: TanStack Query
- **Styling**: Tailwind CSS
## Getting Started
### Prerequisites
- Docker and Docker Compose
- Node.js (v18 or higher)
- Bun
### Installation and Running
1. **Clone the repository:**
```bash
git
github.com
cd credit-jambo-customer
```
2. **Start the services:**
```bash
docker compose up -d
```
Or you can install and run them manually
3. **Install dependencies:**
```bash
# In the root directory
bun install
```
4. **Run the applications:**
```bash
# For the backend (in the backend directory)
cd backend
bun start
# For the frontend (in the frontend/apps/web directory)
cd ../frontend/apps/web
bun dev
```
### Database Migrations
Before you can use the application, you need to run the database migrations to set up the required tables.
1. **Generate migrations (if you change the schema):**
```bash
cd backend
bun db:generate
```
2. **Apply migrations:**
```bash
cd backend
bun db:migrate
```
## API Documentation
The backend API is documented using Swagger. You can access the documentation at `http:/ …