Teamora
Teamora — A personal ERP SaaS project in its early stage, focused on project management. Built with Django, DRF, and React, it supports multiple tenants and is designed to be easy to scale and extend. In the future, it will include more modules like HR, CRM, and Finance to become a full ERP system.
Install / Use
/learn @roshnnjabir/TeamoraREADME
Teamora
Teamora is a personal ERP SaaS project focused on scalable and modular project management. It’s built using Django, Django REST Framework, and React, and supports multi-tenant architecture using django-tenants. This project is in its MVP stage with a completed project management module and plans to expand into HR, CRM, and Finance in the future.
🚀 Features
- ✅ Project & Task management with subtasks
- ✅ Drag-and-drop Kanban interface
- ✅ Role-based access (Admin, Project Manager, Developer)
- ✅ Multi-tenant architecture with subdomain routing
- ✅ Real-time updates using Django Channels + Redis
- ✅ Modular monolithic structure with DRY principles
- 🚧 More ERP modules planned (HR, CRM, Finance)
🛠 Tech Stack
Backend:
- Django
- Django REST Framework
- django-tenants
- PostgreSQL (schema-based multi-tenancy)
- Redis
- Django Channels
- JWT Authentication
Frontend:
- React
- Redux Toolkit
- React Router
- TailwindCSS
- Axios (with tenant-aware API client)
🧱 Project Structure
teamora/
├── backend/ # Django project with modular apps
│ ├── apps/ # Project, Task, User, etc.
│ ├── core/ # Shared utilities, base models
│ └── tenants/ # Tenant and Domain models
├── frontend/ # React frontend
│ ├── components/
│ ├── features/
│ └── pages/
└── README.md
⚙️ Setup Instructions (Local Dev)
📦 Backend (non-Docker)
cd backend
python -m venv env
source env/bin/activate # or .\env\Scripts\activate on Windows
pip install -r requirements.txt
Run Migrations
Migrate public schema first:
python manage.py migrate_schemas --schema=public
Then apply tenant migrations:
python manage.py migrate_schemas --tenant
💡 Or just run for all:
python manage.py migrate_schemas
Create Superuser (for public schema)
python manage.py createsuperuser --schema=public
Run the server
python manage.py runserver
🐳 Docker Setup (Recommended for consistent dev)
Prerequisites
- Docker + Docker Compose installed
Build and Start
docker compose up --build
Backend will be available at:
http://localhost:8000/
Common Docker Commands
-
Restart:
docker compose restart -
Shut down:
docker compose down -
Access backend container:
docker compose exec teamora-backend bash -
Django shell inside container:
docker compose exec teamora-backend python manage.py shell
🏗 Creating a New Tenant
Run the Django shell:
python manage.py shell
Then create a tenant and domain (example):
from tenants.models import Client, Domain
tenant = Client(
name="Acme Corp",
schema_name="acme",
paid_until="2026-01-01",
on_trial=True
)
tenant.save()
domain = Domain()
domain.domain = "acme.localhost" # Use actual subdomain in production
domain.tenant = tenant
domain.is_primary = True
domain.save()
🔁 Visit your tenant at
http://acme.localhost:8000/
Make sure you have proper DNS or local hosts entry.
🌱 Environment Variables
Create a .env file (or use .env.example) in your backend/ folder for things like:
POSTGRES_DB=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DJANGO_SECRET_KEY=your-secret-key
DJANGO_DEBUG=True
ALLOWED_HOSTS=localhost,127.0.0.1
📈 Roadmap
- [x] Project & task management (MVP)
- [x] Subtask support & assignment
- [x] Role-based access
- [x] Multi-tenancy support
- [x] Drag-and-drop Kanban
- [ ] HR module
- [ ] CRM module
- [ ] Finance module
- [ ] Notification center
- [ ] Audit logs & activity tracking
- [ ] Admin dashboard for tenants
- [ ] Mobile optimization
👨💻 Author
Roshan J.
Built with ❤️ to learn, scale, and experiment with modern ERP design and architecture.
📄 License
Teamora is licensed under the MIT License.
