Commit Graph
100 Commits
Author SHA1 Message Date
sankalp 22826fe78b feat(templates): add push notification prompt UI and JS logic
Enable real-time user notifications to improve engagement and ensure timely updates.
2026-06-30 10:22:21 +05:45
sankalp 612a3dd151 feat(push): add browser push notifications via Web Push API
Enable user opt‑in for real‑time ticket updates without third‑party services.
2026-06-30 10:22:04 +05:45
sankalp ee5338e71c style(src/dashboard/page_views): reformat render calls
Make render invocations consistently formatted across files
2026-06-29 08:05:10 +05:45
sankalp 4f9be30a2a refactor(templates): reorganize template hierarchy and update includes
reorganize templates into pages/ and modals/ directories for better structure
update includes to reference new paths, maintaining functionality
2026-06-29 08:01:22 +05:45
sankalp 354b8b2cf8 refactor(src/dashboard): restructure template paths under pages/
Group related templates into subfolders to improve maintainability
2026-06-29 08:01:01 +05:45
sankalp 9da2e2ee03 feat(templates/users): reorganize user templates into pages subdirectory
Refactor template layout to group related pages, improving project structure and clarity.
2026-06-29 08:00:44 +05:45
sankalp e1f1d4a4fc feat(templates/tickets): rename pages and add create ticket modal
Refactor page templates into pages/ and introduce a create modal for ticket creation
2026-06-29 08:00:27 +05:45
sankalp 1a228cbd70 refactor(settings): reorganize UI template hierarchy
Move ui.html into pages subdirectory to improve organization and align with future UI components.
2026-06-29 08:00:10 +05:45
sankalp 25554feac5 feat(page_views): add automation rule management UI
Add support for creating, toggling and deleting automation rules to streamline workflow and reduce manual effort
2026-06-29 07:50:27 +05:45
sankalp 2f1df8ab03 feat(templates/projects): add automation UI and modal for board automation rules
Enable management of automation rules with UI buttons, modal, and status condition handling
2026-06-29 07:50:09 +05:45
sankalp 84cb41790c feat(src/tickets): assign request user as ticket updater
Ensure audit trail of status changes by recording requesting user.
2026-06-29 07:49:51 +05:45
sankalp a6e482691c feat(automation): add automation rule handling for ticket status changes
Prevents brute‑force attacks by enabling server‑side automation on ticket status changes.
2026-06-29 07:49:34 +05:45
sankalp 5e77c3be61 feat(config): add automation rule routes
Add URL routes for board automation actions to enable rule management via API.
2026-06-29 07:49:16 +05:45
sankalp 4d78b7b31b feat(root): improve role‑based permissions and user management documentation
Clarify dynamic custom role CRUD and system roles (superadmin, manager) with per‑project, per‑status move permissions
2026-06-29 07:24:12 +05:45
sankalp d30cfd61c3 fix(src/tickets): wrap move ticket view in atomic transaction with select_for_update
Ensures data integrity and prevents race conditions when moving tickets.
2026-06-29 07:20:47 +05:45
sankalp 0497b7e68d refactor(src/projects): cache role names in role_display_name
Prevent repeated DB hits by caching Role objects and names.
2026-06-29 07:20:29 +05:45
sankalp 9070bf3015 feat(src/dashboard/views): annotate ticket metrics
Introduce aggregated ticket counts to eliminate redundant queries and boost performance.
2026-06-29 07:20:11 +05:45
sankalp e3551a822c refactor(src/dashboard): enhance DB query efficiency and pagination stability
Prevent N+1 queries, streamline aggregation, and fix role deletion count
2026-06-29 07:19:53 +05:45
sankalp 1bdb254e94 feat(src/dashboard/board_views): add atomic transaction and select_for_update to move_ticket view
Ensure consistent status updates and prevent race conditions when moving tickets
2026-06-29 07:19:35 +05:45
sankalp 7431c8f050 refactor(templates): use role_display_name and improve role/admin clarity
Clarify role display names, refine admin role labeling, and update confirmation messages for better UX.
2026-06-29 06:57:52 +05:45
sankalp 80c05d8fc7 refactor(src): replace role CharField with Role FK and centralize role management
Centralize role definitions to support dynamic roles and enforce role existence at DB level
2026-06-29 06:57:35 +05:45
sankalp 574d93ece5 feat(roles): introduce Role CRUD and replace hardcoded role strings with model
Centralize role management and switch to is_admin for admin checks.
2026-06-29 06:57:17 +05:45
sankalp b7d43b57f4 feat(templates/users): adopt role objects for branding and selection
Replace role name comparisons with slug checks and display role.name to support dynamic role definitions.
2026-06-29 06:56:55 +05:45
sankalp 128866bda2 feat(config): add roles CRUD dashboard URL patterns
Add dashboard URL patterns for role management to prepare for upcoming admin role CRUD UI.
2026-06-29 06:56:36 +05:45
sankalp 4c1ebbf357 feat(templates/projects/partials): replace hard-coded status completion check with configurable allowed_move_to_status_ids
Prevents brute-force attacks by only allowing moves to statuses explicitly permitted.
2026-06-28 19:35:54 +05:45
sankalp ce0c1349ca feat(templates/projects): add permissions modal and restricted mode logic
Implement permission configuration UI and enforce restricted movement rules
2026-06-28 19:35:30 +05:45
sankalp 7600b7b773 fix(src/tickets): adjust permission check for moving tickets to use user_can_move_to_status
Clarify error message and strengthen security validation
2026-06-28 19:35:03 +05:45
sankalp eef68868d1 feat(src/dashboard/page_views): add board permissions management UI
Introduce views for creating, editing and deleting board role permissions and expose permission data in the project detail context.
2026-06-28 19:34:38 +05:45
sankalp a6bdf22912 feat(src/dashboard/board_views): add admin role check and permission handling
Replace hard-coded admin checks with granular permission checks using BoardRolePermission
Expose allowed move status IDs to front‑end and unify permission logic across views
2026-06-28 19:34:15 +05:45
sankalp 5d6b3a6220 feat(src/projects): add authorized move-to-status logic and permission model
Allow fine‑grained control over which statuses a role can move tickets to and store permissions centrally.
2026-06-28 19:32:14 +05:45
sankalp fbb1ee7c95 feat(config): add board permissions and delete permission endpoints
Expose permission management views under project-specific URL paths, requiring authentication
2026-06-28 19:31:49 +05:45
sankalp 6a343efc0a refactor(src): replace hardcoded role checks with is_admin attribute
Simplify permission logic by using the unified `is_admin` flag instead of duplicated role list checks.
2026-06-28 19:16:54 +05:45
sankalp 5db8cfc63e feat(templates/users): default new user role to backend_developer
Switch default role from 'member' to 'backend_developer' in forms, list, and modals, ensuring consistency across templates. Also update role label rendering to use get_role_display fallback.
2026-06-28 19:16:22 +05:45
sankalp 9cd3026785 feat(templates/tickets): replace role checks with is_admin for admin UI
Replaces `role != 'member'` checks with `is_admin` to correctly target admin users and simplify conditional rendering.
2026-06-28 19:16:02 +05:45
sankalp 457fc76f9d feat(templates/projects): add manage statuses button and restricted mode UI
Provides admin UI to manage statuses and prevents moving tickets to completed statuses
2026-06-28 19:15:35 +05:45
sankalp 04a7965a2a fix(src/tickets): prevent moving tickets to completed status without admin rights
Non-admin users cannot move tickets to completed statuses to avoid accidental closure.
2026-06-28 19:15:10 +05:45
sankalp b3b6c3eb0b docs(root): expand project overview and environment variable documentation
Add comprehensive project description, feature list, and environment variable reference to improve onboarding and self‑documentation.
2026-06-28 18:42:33 +05:45
sankalp 37cc6a660c feat(templates/projects): replace view link with button and add note view modal
Switch from <a> tag to button with Alpine click handler and add a modal dialog for viewing note content, improving interactivity and user experience.
2026-06-28 18:36:49 +05:45
sankalp 40d435e48d fix(auth): simplify dark mode condition to only check explicit setting
Remove reliance on prefers-color-scheme when dark mode preference is explicitly stored, preventing unintended dark mode activation.
2026-06-28 18:36:25 +05:45
sankalp 4937c99fe6 refactor(src/projects): adjust external access import path and clean up unused import
Use absolute import to avoid app label dependencies and improve code clarity
2026-06-28 18:35:57 +05:45
sankalp 8d61792a3f fix(justfile): add makemigrations before migrate in setup/reset-db
When migrations are not committed (src/*/migrations/ is gitignored),
running 'just setup' skips makemigrations and goes straight to migrate.
Without migration files, admin.0001_initial's swappable_dependency to
accounts becomes a no-op, causing InconsistentMigrationHistory errors
when makemigrations is run later.

Fix by adding makemigrations to setup, setup-complete, and reset-db
targets so migrations are always generated before being applied.
2026-06-28 18:24:28 +05:45
sankalp 04e0d032b7 Revert "fix(src): commit migration files to prevent InconsistentMigrationHistory"
This reverts commit 9f0f771213.
2026-06-28 18:23:52 +05:45
sankalp 9f0f771213 fix(src): commit migration files to prevent InconsistentMigrationHistory
Remove src/*/migrations/ from .gitignore and commit all generated
migration files. The admin.0001_initial migration uses
swappable_dependency(AUTH_USER_MODEL) which requires accounts.0001_initial
to exist before admin migrations can be applied. Without committed migration
files, running migrate before makemigrations causes admin to apply first
(since accounts appears to have no migrations), leading to an
InconsistentMigrationHistory error when makemigrations is run later.

This follows Django's recommended workflow of committing migrations.
2026-06-28 18:20:46 +05:45
sankalp 75bccb4528 chore(root): lowercase "Recommended" to "recommended" and add createcachetable to justfile
Ensure consistent casing and include the necessary cache table creation in setup steps
2026-06-28 16:21:51 +05:45
sankalp 122c83bfb3 chore(src): delete stale Django migration files
Remove migrations that no longer correspond to active models.
2026-06-28 16:12:59 +05:45
sankalp c81a7ca935 chore(src/tickets): delete generated migration files
Remove outdated migration files to clean the repository state and prevent version conflicts.
2026-06-28 16:12:42 +05:45
sankalp 9487fce284 chore(src/projects): remove outdated migration files
Remove generated Django migration files that are no longer needed after refactoring the project schema, ensuring consistent migrations and preventing migration conflicts.
2026-06-28 16:12:25 +05:45
sankalp 61ff8f4d42 chore(src/notifications): remove DeadlineReminderLog migration and related index migrations
Removed the DeadlineReminderLog migration and its index migration files to clean up obsolete code and eliminate migration conflicts.
2026-06-28 16:12:09 +05:45
sankalp 2e1add0a54 chore(src/notes): remove generated migration and __init__ files
Clean up leftover migration artifacts and dependency list to prevent stale imports.
2026-06-28 16:11:52 +05:45
sankalp 4635129b21 Ignore app migration dirs 2026-06-28 16:09:25 +05:45
sankalp df6df1b407 feat(src): cache branding lookup and improve leaderboard performance
Prevent DB hits by caching site branding and refactor leaderboard query using annotate
2026-06-28 16:07:05 +05:45
sankalp ec350b1531 feat(config): add database connection options and cache backend
Add connection pooling and Django cache using Database backend for session persistence to improve performance and reliability in production environments.
2026-06-28 16:06:46 +05:45
sankalp b17e810531 chore(src/accounts): refactor migration dependencies and index formatting
Update dependencies and AddIndex formatting to improve consistency and readability.
2026-06-28 16:06:29 +05:45
sankalp eb717b3a5e feat(src/projects): add prefetch_related and select_related for better performance
Improve query efficiency by prefetching related objects and using select_related, reducing DB hits.
2026-06-28 16:06:11 +05:45
sankalp 9f3a81e313 feat(src/notifications): add select_related to Notification queryset
Optimize database query by prefetching related user data
2026-06-28 16:05:55 +05:45
sankalp f60fe64c84 feat(src): add indexes for role and user-group lookups
Improve query performance for role‑based filtering and user‑group constraints.
2026-06-28 16:01:05 +05:45
sankalp 2350d8c1f0 perf(src/tickets): add database indexes for ticket‑related lookups 2026-06-28 16:00:47 +05:45
sankalp 0f37f9bedb feat(src/projects): add database index on ProjectMember user and project
Improve query performance for user‑project lookups and enforce uniqueness efficiently.
2026-06-28 16:00:30 +05:45
sankalp 86df5d7286 feat(src/notifications): add indexes for deadline reminder and notification models
Prevent missing indexes that slow queries on ticket/user and user/created_at fields.
2026-06-28 16:00:12 +05:45
sankalp 51ad3809dd feat(external): add index to ExternalAccess for project and is_active
Improves query performance on project and is_active lookups.
2026-06-28 15:59:55 +05:45
sankalp d66e03c0ce feat(src/projects): add ProjectNoteInline to ProjectAdmin
Add ProjectNoteInline to allow inline note management in project admin.
Restrict queryset to users with appropriate project memberships.
2026-06-28 15:45:47 +05:45
sankalp 0d11aa0e16 refactor(src/notes): remove admin registration for ProjectNote and add inline comment
The changes reduce admin duplication and align with ProjectAdmin inline registration.
2026-06-28 15:45:27 +05:45
sankalp 1f236a44b8 chore(root): bump django-jazzmin to 3.0.2
Update uv.lock and pin version for reproducibility.
2026-06-28 15:45:09 +05:45
sankalp 9af2a8820a feat(config/settings): externalize TIME_ZONE via env variable
Allow TIME_ZONE to be configured via environment variable while keeping default.
2026-06-28 15:25:39 +05:45
sankalp 1ab6efe6c4 feat(root): add TIME_ZONE setting
Set timezone for Nepal to ensure correct datetime handling.
2026-06-28 15:25:21 +05:45
sankalp 829dc626c2 chore(root): remove docker-compose.yml
Docker Compose moved to Dockerfile and entrypoint for streamlined deployment.
2026-06-28 15:07:59 +05:45
sankalp c29c2c4be8 feat(config): enable session save on every request
Ensures session data persists across requests by saving session at each request.
2026-06-28 15:03:20 +05:45
sankalp 3d3c21d4cc chore(root): remove Procfile and runtime.txt
Removed legacy deployment configuration files that are no longer required.
2026-06-28 15:03:01 +05:45
sankalp aaee794bff feat(static/src): add Tailwind CSS entry point
Initialize Tailwind CSS for front‑end styling
2026-06-28 15:01:41 +05:45
sankalp 5869d85ee4 feat(static): add quotes.json with motivational quotes
Add static JSON file containing 150 inspirational quotes for frontend usage.
2026-06-28 15:01:23 +05:45
sankalp c0750c00e7 feat(static/css): add Tailwind CSS entry file
Adds Tailwind CSS pre‑flight and utilities to enable consistent styling across the frontend. This file will be compiled by django-tailwind-cli and bundled with static assets.
2026-06-28 15:01:06 +05:45
sankalp ec9012efcb feat(deps): upgrade Django to 5.0
Fix compatibility with new middleware and remove deprecated imports.
2026-06-28 15:00:47 +05:45
sankalp 0e255da3fb fix(templates): simplify dark mode detection
Remove redundant prefers-color-scheme check after confirming dark mode via localStorage.
2026-06-28 15:00:20 +05:45
sankalp ab0e71f7eb feat(src): add ticketing REST API and admin UI for tickets, settings, and branding
Introduce DRF views for ticket creation, listing, updating, and commenting, integrate admin registrations for new models, and provide a demo data command to seed initial content. This enables full project management workflow within the backend.
2026-06-28 14:16:16 +05:45
sankalp 57c6984c66 refactor(.github): split CI workflow into lint, test, and security jobs
Body:
- Separate lint, test, and security stages
- Use uv for dependency management
- Move env variables to appropriate jobs
- Remove redundant steps and improve readability
2026-06-28 14:15:57 +05:45
sankalp 71b700388b feat(templates): add polished login UI with Tailwind and Alpine.js
Enhances user experience with dark‑mode detection, responsive layout, and streamlined role selection workflow
2026-06-28 14:15:39 +05:45
sankalp 89adfe89c5 feat(config): add email backend and update settings for production
Support email sending via SMTP, configure static/media handling, set correct timezone, enable Swagger UI, and add external access routes.
2026-06-28 14:15:22 +05:45
sankalp 9d5ebcfcde feat(root): add project management features and dependencies
Add Kanban board, epics, notifications, external sharing, and related API endpoints; update README and install required packages such as django‑q2, openpyxl, and others.
2026-06-28 14:15:00 +05:45
sankalp ed1d6c66c8 update 2026-06-28 12:36:40 +05:45
sankalp 71bfd63799 update 2026-06-28 12:36:16 +05:45
sankalp 70fd9711b5 feat(src): replace config with Django settings and add board view with context processors for dashboard metrics
Replace decouple config calls for Google OAuth credentials with settings; add new board view and associated context processors to render project board and dashboard charts; update serializer import path; centralize configuration and improve maintainability.
2026-06-25 23:31:04 +05:45
sankalp b8070e292c refactor(src/tickets): update serializer imports to src.* namespace
Switch from apps.* to src.* imports for consistency with project structure
2026-06-25 23:30:43 +05:45
sankalp 610d95bf04 refactor(src/projects): adjust imports from apps.* to src.* namespace
Switch to absolute imports under src to align with package structure and avoid circular import issues.
2026-06-25 23:30:21 +05:45
sankalp 67c27f6057 chore(root): pin dependencies and improve formatting
Pin dependencies to explicit versions for reproducible builds and update ruff config for consistency.
2026-06-25 23:30:04 +05:45
sankalp a5ca9a8cd6 feat(config): add Google OAuth client configuration and extend external URL routes
Add GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, and GOOGLE_REDIRECT_URI env vars and configure external access endpoints for OAuth callback and logout.
2026-06-25 23:29:46 +05:45
sankalp 9d11d397cb update 2026-06-25 23:29:34 +05:45
sankalp a4876e5b8b fuck ai 2026-06-25 23:13:25 +05:45
sankalp 660d55f4f4 feat(protocol): add ProtocolState implementation
Introduce model, admin, serializers, views and URL routes for managing protocol states.
2026-06-25 23:12:35 +05:45
sankalp e220cfdaa3 feat(tickets): add Ticketing app with models, admin, serializers and views
Adds full ticketing functionality for issue tracking, including priority and status management, comments, history, and API endpoints.
2026-06-25 23:11:07 +05:45
sankalp 03bda8889b feat(src/projects): add Project and ProjectMember models with API serializers and views
Implement project management infrastructure to support ticket workflows and dashboard statistics
2026-06-25 23:09:28 +05:45
sankalp 0851411be7 feat(src/notes): add note CRUD API
Implement models, serializers, views and URLs for managing project notes; enables structured association of notes with projects and users, improving organization and auditability.
2026-06-25 23:07:58 +05:45
sankalp 72a4c81028 feat(src/external): add ExternalAccess model and serializer and view for external token authentication
Add token generation, password field, and secure login endpoint to manage external service access.
2026-06-25 23:06:37 +05:45
sankalp aeedeb6ea0 feat(src/epics): scaffold epic module with models, admin, serializers, urls, views
Implement core Epic model and API for managing project epics, enabling CRUD operations and integration with admin and DRF.
2026-06-25 23:04:37 +05:45
sankalp 493cb6774f feat(auth): add Google OAuth2 login flow and token endpoint
Added GoogleLoginView and GoogleAuthUrlView to exchange auth code for tokens, create or link users, and return refresh/access tokens. Updated User model with Google ID and serializers for profile data.
2026-06-25 23:02:25 +05:45
sankalp 996777f937 initialize project 2026-06-25 22:58:45 +05:45
sankalp 33c414d71d chore(static): remove Tailwind CSS file
Deletes unused Tailwind CSS file to simplify build and reduce bundle size.
2026-06-25 14:40:26 +05:45
sankalp 9a6d3a3472 refactor(templates): remove duplicate and unused base template files
Remove duplicated base templates that caused conflicts and were no longer referenced.
2026-06-25 14:40:08 +05:45
sankalp 000bd08445 refactor(config): delete config package
Remove the entire config package as part of project restructuring and migration to a new configuration system.
2026-06-25 14:39:49 +05:45
sankalp f2bc450267 refactor(apps): remove django apps accounts and tickets
Remove unused apps to simplify the project and reduce maintenance burden.
2026-06-25 14:39:31 +05:45
sankalp 26a679268b chore(root): remove project planning markdown and outdated configuration files
Remove extensive PLAN.md, management scripts, and lock files that are no longer needed.
2026-06-25 14:39:13 +05:45