Point-of-sale billing software with order management, inventory tracking, and real-time dashboard analytics.
Live Demo: https://billflow-client-production.up.railway.app
Login: admin@example.com / password
- Java 21 + Spring Boot 3.4.4
- Spring Security + JWT authentication
- Spring Data JPA + Hibernate
- MySQL 8.0 database
- Maven build tool
- React 18 + Vite
- Tailwind CSS styling
- Framer Motion animations
- React Router 6 navigation
- Axios HTTP client
- Recharts data visualization
- Railway (backend + MySQL)
- Docker (local development)
Billing-Software/
├── billingsoftware/ # Spring Boot Backend
│ ├── src/main/java/
│ │ └── in/bushansirgur/billingsoftware/
│ │ ├── config/ # Security, CORS config
│ │ ├── controller/ # REST endpoints
│ │ ├── entity/ # JPA entities
│ │ ├── filter/ # JWT filter
│ │ ├── io/ # Request/Response DTOs
│ │ ├── repository/ # Data access layer
│ │ ├── service/ # Business logic
│ │ └── util/ # JWT utilities
│ ├── src/main/resources/
│ │ ├── application.properties
│ │ ├── application-docker.properties
│ │ └── application-production.properties
│ ├── Dockerfile
│ └── pom.xml
│
├── client/ # React Frontend
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── context/ # React context (auth, sidebar)
│ │ ├── hooks/ # Custom hooks
│ │ ├── pages/ # Page components
│ │ ├── Service/ # API service functions
│ │ ├── util/ # Axios config, helpers
│ │ ├── App.jsx
│ │ └── main.jsx
│ ├── public/images/ # Static assets
│ ├── Dockerfile
│ └── package.json
│
├── docker-compose.yml # Local dev environment
├── billing_app.sql # Database schema
└── README.md
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/v1.0/login |
User authentication |
| GET | /api/v1.0/dashboard |
Dashboard stats |
| GET/POST | /api/v1.0/categories |
Category CRUD |
| GET/POST | /api/v1.0/items |
Item CRUD |
| GET/POST | /api/v1.0/orders |
Order CRUD |
| GET/POST | /api/v1.0/admin/users |
User management |
- Docker + Docker Compose
- Node.js 20+
- Java 21
- MySQL 8.0
# Start all services
docker-compose up -d
# Frontend: http://localhost:5173
# Backend: http://localhost:8080
# MySQL: localhost:3306Backend:
cd billingsoftware
./mvnw spring-boot:runFrontend:
cd client
npm install
npm run devDatabase:
mysql -u root -p < billing_app.sqlSPRING_DATASOURCE_URL=jdbc:mysql://host:3306/db
SPRING_DATASOURCE_USERNAME=root
SPRING_DATASOURCE_PASSWORD=password
JWT_SECRET=your-secret-key
CORS_ALLOWED_ORIGINS=https://your-frontend.com
VITE_API_URL=https://your-backend.com/api/v1.0
# Login
railway login
# Initialize project
railway init --name billflow
# Add MySQL
railway add --database mysql
# Deploy backend
cd billingsoftware
railway service link billflow-api
railway up
# Deploy frontend
cd ../client
railway service link billflow-client
railway up
# Set environment variables via Railway dashboardTables:
tbl_users- User accounts (admin/staff)tbl_category- Product categoriestbl_items- Products/servicestbl_orders- Customer orderstbl_order_items- Order line items
- JWT-based authentication
- Role-based access (Admin/User)
- Real-time dashboard with sales analytics
- Category and item management
- Order creation and history
- Responsive design
- Dark theme UI