Modular business management software for small businesses — inventory, sales, and operational control.
Rigel Collection consolidates and reimagines several previous iterations built during my learning process, this time with a clear architecture and a long-term roadmap.
| Module | Tech | Status |
|---|---|---|
rigel |
Spring Boot + Kotlin | Active |
rigel_dream |
React + TypeScript | Active |
rigel_android |
Jetpack Compose (+ KMP TBD) | Refactor |
┌─────────────────────────────────────────┐
│ rigel_dream │
│ (React + TypeScript) │
│ Web frontend · Port 5173 │
└────────────────────┬────────────────────┘
│ REST API
┌────────────────────▼────────────────────┐
│ rigel │
│ (Spring Boot + Kotlin) │
│ Backend · Port 8080 │
│ │
│ ┌──────────┐ ┌──────┐ ┌──────────┐ │
│ │Inventory │ │Sales │ │ Image │ │
│ │ Module │ │Module│ │ Service │ │
│ └──────────┘ └──────┘ └────┬─────┘ │
└───────────────────────────────┼─────────┘
┌──────────┐ │
│PostgreSQL│ ┌─────▼──────┐
│ DB │ │ Cloudinary │
└──────────┘ └────────────┘
Coming soon — the project is under active development.
Backend (rigel)
- Kotlin + Spring Boot
- PostgreSQL
- Cloudinary (image storage)
- Docker
Frontend (rigel_dream)
- React + TypeScript
- Vite
Planned
- Jetpack Compose (Android)
- Kotlin Multiplatform (KMP)
- Java 21+
- Node.js 22+
- PostgreSQL instance (local or remote)
- A Cloudinary account (optional — falls back to local storage)
cd rigel
./gradlew build bootRunThe server starts on http://localhost:8080.
cd rigel_dream
npm install
npm run devThe app starts on http://localhost:5173.
docker build -t rigel:1.0 .
docker run -p 8080:8080 rigel:1.0cd rigel
./gradlew clean build
java -jar build/libs/Rigel-*.jarCreate an application.yml (or set environment variables) for the backend:
spring:
datasource:
url: jdbc:postgresql://localhost:5432/rigel
username: your_user
password: your_password
cloudinary:
cloud-name: ${CLOUDINARY_CLOUD_NAME}
api-key: ${CLOUDINARY_API_KEY}
api-secret: ${CLOUDINARY_API_SECRET}
folder: rigel/products # optional, this is the default
image:
storage:
local-path: ./uploads # fallback if Cloudinary is not configured
public-path: /uploadsIf Cloudinary credentials are absent or blank, the service falls back to local disk storage automatically.
- Product inventory (CRUD)
- Image upload with Cloudinary + local fallback
- Supplier management
- Sales module (basic)
- Low stock alerts
- Sales history and reports
- Role-based access (admin / employee)
- Android app (
rigel_android) with Jetpack Compose - Evaluate Kotlin Multiplatform for shared business logic
Contributions are welcome. Fork the repo, make your changes, and open a pull request. For significant changes, opening an issue first to discuss the approach is appreciated.
This project is licensed under the MIT License.