From 75651a6bd33b6bc36242175ac80027b326ddca83 Mon Sep 17 00:00:00 2001 From: Harkamal Randhawa Date: Sun, 19 Apr 2026 18:56:58 -0600 Subject: [PATCH] add project README --- README.md | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6575e1cd..959d9825 100644 --- a/README.md +++ b/README.md @@ -1 +1,113 @@ -# group-2-threaded-project-petshop \ No newline at end of file +# PetShop + +A pet store management application with a Spring Boot API serving three clients: a Next.js web app, a JavaFX desktop app, and an Android app. + +Handles product sales, pet adoption, appointment booking, real-time chat, AI assistance, payments (Stripe), email notifications (Resend), and file storage (Azure Blob). + +## Tech Stack + +| Layer | Technology | +|-------|------------| +| API | Java 25, Spring Boot 4, Spring Security (JWT), Hibernate | +| Database | MySQL 8.0, Flyway migrations | +| Web | Next.js 16, React 19, Tailwind CSS 4 | +| Desktop | JavaFX, Maven | +| Android | Kotlin, Hilt, Retrofit, CameraX | +| Infra | Docker, Azure Container Apps | + +## Project Structure + +``` +main/ + backend/ Spring Boot REST API + web/ Next.js frontend + desktop/ JavaFX desktop client + android/ Android mobile app +``` + +## Prerequisites + +- Java 25 +- Node.js 18+ +- Docker +- Maven +- Android Studio (for mobile) + +## Getting Started + +### 1. Start the database + +```sh +cd backend +docker compose -f docker-compose.dev.yml up -d +``` + +### 2. Configure the backend + +```sh +cd backend +cp .env.example .env +``` + +Fill in `.env` with your keys: + +``` +JWT_SECRET= +STRIPE_SECRET_KEY=sk_test_... +OPENROUTER_API_KEY=sk-or-v1-... +RESEND_API_KEY=re_... +RESEND_FROM=PetShop +``` + +### 3. Run the backend + +```sh +cd backend +mvn spring-boot:run +``` + +The API starts at `http://localhost:8080`. Flyway runs migrations and seeds data automatically on first boot. + +### 4. Run the web frontend + +```sh +cd web +cp .env.example .env.local +npm install +npm run dev +``` + +The web app starts at `http://localhost:3000`. + +### 5. Run the desktop client (optional) + +```sh +cd desktop +cp connectionpetstore.properties.example connectionpetstore.properties +mvn javafx:run +``` + +### 6. Run the Android app (optional) + +Open `android/` in Android Studio and run on an emulator or device. + +## API + +A Postman collection is available at `backend/postman/`. Key endpoint groups: + +- `/api/auth` -- registration, login, password reset +- `/api/products` -- catalog and inventory +- `/api/pets` -- listings and adoption +- `/api/appointments` -- booking +- `/api/cart`, `/api/sales`, `/api/refunds` -- transactions +- `/api/chat` -- messaging and AI assistant +- `/ws` -- WebSocket (STOMP) for real-time updates + +## Docker (full stack) + +```sh +cd backend +docker compose up --build -d +``` + +Starts the API and MySQL together. The web frontend has its own Dockerfile for independent deployment.