Flowcus is a comprehensive web-based application designed to help users manage their tasks, organize their time through timetables, and monitor their productivity. The application combines task management with time-based scheduling to provide users with a complete productivity solution.
Flowcus enables users to:
- Create and manage tasks with categorization
- Organize tasks into categories and subtypes
- Build weekly timetables with scheduled time slots
- Track current activities and focus areas
- View productivity statistics and insights
- Manage multiple timetables with activation control
- Monitor real-time task scheduling
The application is built with a robust backend (.NET Core) and modern frontend (Angular) architecture, with PostgreSQL as the database.
- Create, read, update, and delete tasks
- Assign tasks to categories and subtypes
- Track task creation and modification timestamps
- Support for task description and detailed information
- User-specific task isolation (each user can only see their own tasks)
- Soft delete functionality for data retention and audit trails
- Create custom task categories
- Define task subtypes with color coding and icons
- Organize subtypes within categories for better structure
- Assign color indicators (hex colors) to subtypes for visual identification
- Set custom icons for visual representation in the interface
- Create multiple weekly timetables
- Assign task categories and subtypes to time slots
- View timetables in calendar format by day of week
- Activate and deactivate timetables (only one active timetable per user at a time)
- Add specific date overrides to scheduled time slots
- Automatic overlap prevention for scheduled items
- Time validation and format conversion (12-hour to 24-hour)
- View productivity statistics (total tasks, completed tasks, categories used)
- Monitor current activity - see what task is scheduled for the current time
- Real-time focus tracking showing active time slot information
- User statistics including name and admin status
- Time-based task recommendations based on current schedule
- User registration and login with secure authentication
- Password hashing with BCrypt (configurable work factor)
- Account lockout after failed login attempts (configurable threshold and duration)
- Failed login attempt tracking and automatic reset on successful authentication
- User profile management
- Admin role support for system-wide user and category management
- View all users in the system
- Manage task categories across the system
- Create new global task categories
- Modify user information
- Track user creation dates and activity
- JWT (JSON Web Token) based authentication
- Role-based access control (User and Admin roles)
- IP-based and user-based rate limiting on login attempts
- Configurable rate limits to prevent brute force attacks
- Secure password storage with BCrypt
- Account lockout mechanism after failed login attempts
- Session management with configurable JWT expiration
- ASP.NET Core 7.0 or later
- RESTful API with comprehensive endpoint coverage
- Dapper ORM for database operations
- PostgreSQL database with optimized queries
- Role-based authorization middleware
- Memory caching for rate limiting
- Structured logging and error handling
- Exception handling for database constraints and business logic errors
- Angular 15+ framework
- TypeScript for type-safe development
- Responsive design for web browsers
- Service-based architecture for API communication
- Form validation on client side before submission
- Time format conversion (12-hour AM/PM to 24-hour format)
- Overlap detection for schedule conflicts
- Calendar view for weekly timetables
- Relational schema with referential integrity
- Soft delete pattern for data retention
- Timestamp tracking (created_on, updated_on)
- Check constraints for data validation
- Foreign key relationships for data consistency
- Tables: userlist, tasks, task_category, task_subtypes, timetables, timetable_items
The application implements multiple layers of security:
- All user data is isolated (users can only access their own data)
- Password hashing prevents plain-text storage
- JWT tokens for stateless authentication
- Authorization checks on all protected endpoints
- Rate limiting prevents brute force attacks
- Soft deletes preserve data audit trails
- Configurable password hashing parameters
POST /api/auth/login- User loginPOST /api/auth/register- User registrationPOST /api/auth/refresh- Refresh JWT tokenPOST /api/auth/logout- User logout
GET /api/tasks- List all user tasksPOST /api/tasks- Create new taskGET /api/tasks/{id}- Get specific taskPUT /api/tasks/{id}- Update taskDELETE /api/tasks/{id}- Delete task
GET /api/categories- List all categoriesPOST /api/categories- Create categoryGET /api/categories/{id}- Get specific categoryPUT /api/categories/{id}- Update categoryDELETE /api/categories/{id}- Delete category
GET /api/subtypes- List all subtypes for userPOST /api/subtypes- Create subtypeGET /api/subtypes/{id}- Get specific subtypePUT /api/subtypes/{id}- Update subtypeDELETE /api/subtypes/{id}- Delete subtype
GET /api/timetable- List all user timetablesPOST /api/timetable- Create new timetableGET /api/timetable/{id}- Get specific timetablePUT /api/timetable/{id}- Update timetableDELETE /api/timetable/{id}- Delete timetablePOST /api/timetable/{id}/activate- Activate timetablePOST /api/timetable/{timetableId}/items- Add item to timetableGET /api/timetable/{timetableId}/items- Get timetable itemsPUT /api/timetable/items/{id}- Update timetable itemDELETE /api/timetable/items/{id}- Delete timetable item
GET /api/dashboard/stats- Get user statisticsGET /api/dashboard/now- Get current scheduled task
GET /api/user/profile- Get user profilePUT /api/user/profile- Update user profilePOST /api/user/change-password- Change password
GET /api/admin/users- List all users (admin only)GET /api/admin/users/{id}- Get specific user (admin only)POST /api/admin/categories- Create global category (admin only)GET /api/admin/categories- List all categories (admin only)PUT /api/admin/users/{id}- Update user details (admin only)DELETE /api/admin/users/{id}- Delete user (admin only)
Configuration is managed through:
appsettings.json- Default settingsappsettings.{Environment}.json- Environment-specific settings- Environment variables - For sensitive information (database connection, JWT secret)
Key configuration options:
- Database connection string
- JWT secret and expiration time
- BCrypt work factor (password hashing strength)
- Rate limit thresholds (IP-based and user-based)
- CORS settings for frontend domain
- Logging levels
- Queries are optimized with proper indexing
- Soft delete pattern allows for efficient filtering
- JWT authentication enables stateless API design
- Overlap detection uses database-level queries for efficiency
- Rate limiting prevents abuse and system overload
- API documentation available through Swagger/OpenAPI (when enabled)
- Database schema documentation in FlowCus-db folder
- Setup instructions in SETUP_GUIDE.md
- Code follows standard naming conventions and is well-structured for maintainability
Potential features for future versions:
- Task priorities and due dates
- Recurring timetables
- Team collaboration and shared timetables
- Mobile application support
- Advanced analytics and reporting
- Integration with calendar applications
- Email notifications for upcoming tasks
- Task history and audit logs
- Custom time zones and DST handling
This project is provided as-is. Review LICENSE file for details.
For issues, bugs, or feature requests, please refer to the project documentation or contact the development team.