This project is developed as both a school project and a potential SaaS product.
A modern task and workflow management system inspired by tools like Linear and Trello, built as a full-stack web application using a React SPA frontend and ASP.NET Core Web API backend.
π Website: getflowhub.app
Some dashboard sections are intentionally mocked/preview-only while corresponding backend systems are still under development.
- React + TypeScript (Vite)
- Tailwind CSS
- React Router
- Component-based SPA architecture
- Optimistic UI updates
- API-driven frontend
- ASP.NET Core Web API
- Entity Framework Core (Code First)
- JWT Authentication
- PostgreSQL
- Frontend: Vercel
- Backend: Railway
- Database: Railway
FlowHub is not just a Trello clone.
The goal is to create a fast, minimal, and structured workflow system focused on:
- Speed
- Clean UI
- Real usability
- Smooth interactions
- Modern SaaS UX
The frontend is heavily inspired by modern productivity tools like Linear while maintaining its own structure and branding.
- Register / Login
- JWT-based authentication
- Protected app routes
- Persistent login via local storage
- Create and manage workspaces
- Workspace switching
- Multi-workspace structure
- Create boards inside workspaces
- Kanban-style workflow organization
- Create, edit, move, and delete tasks
- Drag & drop between columns
- Inline editing
- Optimistic UI updates
- Default Todo / In Progress / Done columns
- Column-based task organization
- Task comments
- Labels / tags
- Activity logging foundation
- Fully redesigned SaaS-style interface
- Premium animated landing page
- Responsive dashboard layout
- Custom error pages
- Mocked future-product sections clearly marked
- Workspace invitations / collaboration
- Real notifications
- Real-time updates (SignalR)
- Due dates & reminders
- File uploads
- Advanced filtering/search
- Keyboard shortcuts
- Analytics / productivity insights
- Deployment & production environment
The database is designed for scalability, workspace isolation, and clean relational integrity.
Key design decisions:
- Multi-workspace architecture
- Soft delete support across core entities
- Relational integrity with proper foreign keys
- Indexed fields for performance
- EF Core code-first workflow
π https://dbdiagram.io/d/FlowHub-69cd9c4678c6c4bc7ac35520
- React + TypeScript SPA
- React Router navigation
- Centralized API service layer
- Optimistic UI state updates
- Protected routes with auth context
- RESTful API
- JWT authentication
- EF Core + PostgreSQL
- Data annotations validation
- Simple controller-based architecture
- EF Core migrations
- PostgreSQL relational structure
- Code-first development flow
| Tool | Minimum version | Notes |
|---|---|---|
| Node.js | 18 | Required for the frontend |
| .NET SDK | 8.0 | Required for the backend |
| PostgreSQL | 14 | Local instance or Docker |
| EF Core CLI | 8.0 | dotnet tool install -g dotnet-ef |
git clone <repo-url>
cd FlowHubCopy the example settings file and fill in your values:
cp backend/appsettings.Development.example.json backend/appsettings.Development.jsonThen edit backend/appsettings.Development.json:
Example:
{
"ConnectionStrings": {
"DefaultConnection": "Host=localhost;Port=5432;Database=flowhub_dev;Username=postgres;Password=YOUR_PASSWORD"
},
"Jwt": {
"Key": "REPLACE_WITH_A_LONG_RANDOM_SECRET_AT_LEAST_32_CHARS",
"Issuer": "FlowHub",
"Audience": "FlowHubClient",
"ExpiresInDays": 7
}
}appsettings.Development.json is intentionally not committed to GitHub.
JWT key: Generate a secure random string (32+ characters). On macOS/Linux:
openssl rand -base64 32
The frontend auto-targets http://localhost:5000 when VITE_API_URL is not set. To override:
# frontend/.env.local (not committed)
VITE_API_URL=http://localhost:5000Frontend:
cd frontend
npm installBackend:
cd ../backend
dotnet restoredotnet ef database updateFrom the root folder:
npm run devOr separately:
Backend:
cd backend
dotnet runFrontend:
cd frontend
npm run devThe app will be available at:
- Frontend: http://localhost:5173
- Backend API: http://localhost:5000
- Swagger UI: http://localhost:5000/swagger (Development only)
A seeded development account is automatically created in Development mode.
Email: dev@getflowhub.app
Password: 12345678You can use this account immediately after running migrations and starting the app.
Drop and recreate the local database:
cd backend
dotnet ef database drop
dotnet ef database updateSeed data is recreated automatically in Development mode.
FlowHub/
βββ backend/
β βββ Controllers/ # API endpoints
β βββ DTOs/ # Request/response shapes
β βββ Models/ # EF Core entities + shared constants
β βββ Data/ # AppDbContext, development seeder
β βββ Services/ # JWT token service, helper extensions
β βββ Migrations/ # EF Core migration history
β
βββ frontend/
β βββ src/
β β βββ components/ # Reusable UI, layout, auth, board, workspace
β β βββ pages/ # Route-level page components
β β βββ services/ # API call helpers (one file per domain)
β β βββ types/ # Shared TypeScript interfaces
β β βββ utils/ # Pure utility helpers (e.g. colorHash)
β βββ public/
β
βββ .github/
βββ copilot-instructions.md
βββ design.mdThe backend intentionally avoids unnecessary complexity.
Not used intentionally:
- Repository pattern
- CQRS
- AutoMapper
- ASP.NET Identity
- Heavy abstraction layers
Goal:
- Keep code easy to understand
- Keep architecture production-like but explainable
- Make debugging straightforward
The frontend focuses more heavily on:
- Product feel
- UX polish
- Animations
- Responsive design
- SaaS-style presentation
This project is AI-assisted, but:
- Architecture and technical decisions are human-driven
- Project-specific rules are enforced through:
.github/copilot-instructions.md.github/design.md
- Focus is on maintainable and understandable code, not blindly generated output
- ASP.NET Core Web API
- PostgreSQL + EF Core
- JWT authentication
- Migrations + development seeding
- Workspaces / Boards / Tasks APIs
- Comments & labels
- Protected endpoints
- Full React + TypeScript SPA
- Premium landing page
- Dashboard/app shell
- Drag & drop task movement
- Authentication flow
- Optimistic UI updates
- Responsive UI
- Mocked future SaaS features
- Deployment
- Workspace collaboration
- Real notifications
- Production hardening



