IssueForge is a full-stack issue and work tracking application for small teams. It helps organize projects, work items, comments, assignments, team roles, activity logs and member statistics in private workspaces.
It combines a compact issue board, team workspaces, permissions, comments, assignments, attachments and activity tracking in a clean Angular + ASP.NET Core monorepo.
- Frontend: Angular, Angular routing, Angular forms, Angular CDK drag-and-drop
- Backend: ASP.NET Core Web API
- Database: SQLite with Entity Framework Core
- API documentation: Swagger / OpenAPI
- Authentication: local email/password auth, optional Google OAuth configuration
- Styling: custom responsive CSS with a professional dark product interface
- Version control: Git with a structured commit history
- Account registration and sign-in
- Account deletion with shared-team ownership checks
- Optional Google OAuth entry point when credentials are configured
- Private team workspaces
- Create teams or join by invite code/link
- Delete a team when you are the owner
- Transfer team ownership to another member with confirmation
- Team-scoped projects, issues, comments, members and activity
- Project CRUD: create, edit, delete and list projects
- Issue CRUD: create, edit, delete and list issues
- Issue preview modal with description, status, priority, assignees and comments
- Issue attachments for screenshots, media, documents and text files
- Add and delete comments directly from the issue preview modal
- Kanban-style board with drag-and-drop status updates
- Table view with inline status and priority editing
- Filters by team, status, priority, project and assignee
- Assignment controls with member avatars and quick "assign me" actions
- Team member roles: Owner, Manager, Member, Commenter and Viewer
- Team permissions for editing and assigning issues
- Commenter role for users who can only leave task comments
- Member issue limits
- Member statistics page
- Team activity log for issue and permission changes
- Account profile page with avatar upload, drag/drop, paste and circular crop controls
- Dashboard with total, open, fixed and critical issue counts
- Recently updated issue list with update time and actor
- Critical watchlist
- Toast notifications, loading states and empty states
- Professional dark workspace UI with readable surfaces, modals, tables and board cards
- Polished modal workflows for issue creation, issue previews, team settings and account management
- DTO-based API responses instead of exposing raw EF entities
- Optional seed data for local development
- CORS configuration for the Angular dev server
- Docker Compose setup for local container runs
- GitHub Actions workflow for backend and frontend build checks
GitHub Releases are used for stable source-code snapshots. Each release includes the repository source archive and release notes with a recommended click-through testing flow.
For a public browser demo, deploy both parts of the app:
- Frontend: Angular static build
- Backend: ASP.NET Core Web API
- Database: SQLite volume or a managed relational database
GitHub Releases are useful for downloading a versioned project snapshot, but they do not host the running backend or database by themselves.
IssueForge/
backend/ ASP.NET Core Web API, EF Core models, DTOs, controllers and services
frontend/ Angular app with routed pages, API services and custom CSS
README.md
.gitignore
cd backend
dotnet restore
dotnet run --launch-profile httpThe backend runs at:
- API:
http://localhost:5008/api - Swagger:
http://localhost:5008/swagger
SQLite database file:
backend/issueforge.db
The database is created automatically on startup. Development seed data is enabled through configuration.
Local development seed account:
- Email:
alex.morgan@issueforge.local - Password:
Demo123!
cd frontend
npm install
npm startThe Angular app runs at:
http://localhost:4200
Make sure the backend is running before using the frontend.
For CI-compatible installs, use:
cd frontend
npm ci
npm run builddocker compose up --buildContainer URLs:
- Frontend:
http://localhost:4200 - Backend API:
http://localhost:5008/api - Swagger:
http://localhost:5008/swagger
The Docker Compose setup stores SQLite data in the issueforge-data volume.
GET /api/auth/statusPOST /api/auth/registerPOST /api/auth/loginPOST /api/auth/logoutPUT /api/auth/accountDELETE /api/auth/accountGET /api/auth/googleGET /api/auth/google/callback
GET /api/teamsPOST /api/teamsPOST /api/teams/joinPUT /api/teams/{teamId}/members/{memberId}POST /api/teams/{teamId}/transfer-ownerDELETE /api/teams/{teamId}GET /api/teams/{teamId}/statsGET /api/teams/{teamId}/activity
GET /api/projectsGET /api/projects/{id}POST /api/projectsPUT /api/projects/{id}DELETE /api/projects/{id}
GET /api/issuesGET /api/issues?status=Open&priority=High&projectId=1&assigneeId=2GET /api/issues/{id}POST /api/issuesPUT /api/issues/{id}DELETE /api/issues/{id}
GET /api/issues/{issueId}/commentsPOST /api/issues/{issueId}/commentsDELETE /api/issues/{issueId}/comments/{commentId}
GET /api/dashboard
The backend uses Entity Framework Core with SQLite. The main entities are:
AppUserTeamTeamMemberProjectIssueIssueAssignmentCommentActivityLog
Issue statuses:
OpenInProgressFixedRejected
Issue priorities:
LowMediumHighCritical
- Angular standalone components and routing
- Angular forms and typed API models
- Angular CDK drag-and-drop
- Reusable frontend API service layer
- Modal-based CRUD flows
- Loading, error and empty UI states
- ASP.NET Core Web API controllers
- EF Core relationships and SQLite persistence
- DTOs for API boundaries
- Team-scoped data access
- Cookie-based authentication with production cookie hardening
- Optional external OAuth integration point
- Role-aware authorization checks for team actions, issue editing and comments
- CRUD operations with proper HTTP status codes
- Basic validation and error handling
- Swagger/OpenAPI documentation
- Clean monorepo organization
- Practical Git workflow and commit history
- Clear README and deployment-oriented project presentation
- Docker Compose foundations
- GitHub Actions build workflow for backend and frontend checks
- Build the backend with
dotnet publish -c Release. - Build the frontend with
npm run build. - Configure the frontend API base URL for the deployed backend before hosting.
- Set a production SQLite path or replace SQLite with a managed relational database.
- Use HTTPS and a production identity provider before exposing the app publicly.
- Store Google OAuth credentials and connection strings as environment secrets.
- Run the GitHub Actions workflow before merging changes.
- Privacy Policy:
PRIVACY.md - Terms of Use:
TERMS.md - Release notes:
RELEASE_NOTES.md
These documents are included so the project can be reviewed as a realistic demo and prepared for a future hosted deployment. Review and adjust them before exposing a public demo.
- Production-grade JWT or external identity provider setup
- Refresh tokens and stricter role-based authorization policies
- Pagination, search and server-side sorting
- Attachment previews with external object storage support
- Rich text comments
- Notifications for assignment and status changes
- Unit and integration tests
- API-level tests for team permissions and ownership transfer
- Hosted production deployment










