Open source issue tracker for Agile teams - A self-hosted alternative to Jira/Atlassian.
Built with React, TypeScript, Node.js, Prisma, and SQLite.
- Kanban Board: Drag & drop issue management with smooth animations
- Issue Tracking: Complete issue lifecycle management
- Timeline View: Visual project timeline with status indicators
- Backlog Management: Prioritization and sprint planning
- Dashboard: Real-time project statistics and insights
- Multi-tenancy: Project-based organization
- Responsive Design: Works on desktop, tablet, and mobile
- Single-container SQLite deployment
- Docker Compose with a persisted SQLite volume
- PostgreSQL, Redis, and Kubernetes are roadmap items, not supported runtime targets yet
- Built-in: Simple username/password
- SSO: SAML and OIDC are roadmap items
- Role-based access control (RBAC)
- Audit logging is a roadmap item
- Rate limiting
- HTTPS/TLS support
- Compliance hardening is a roadmap item
# Clone and run with Docker
git clone https://github.com/yourusername/opensprint.git
cd opensprint
docker compose -f docker-compose.simple.yml up -d# Install dependencies
npm install
# Set up database
cp .env.example .env
npx prisma generate
npx prisma db push
# Start development servers
npm run devDemo mode still requires the SQLite database connection. It seeds a demo user, project, and issues at server startup.
# Required
JWT_SECRET=your-32-character-secret-key-here
DEMO_MODE=true
# Optional (customize demo credentials)
DEMO_USERNAME=demo
DEMO_PASSWORD=demo
DEMO_USER_EMAIL=demo@opensprint.io
DEMO_USER_NAME=Demo UserDemo credentials are demo@opensprint.io / demo by default.
| Variable | Default | Description |
|---|---|---|
DATABASE_PROVIDER |
sqlite |
Database type. Only sqlite is supported currently |
DATABASE_URL |
file:./dev.db |
Database connection string |
AUTH_MODE |
simple |
Auth mode. Only simple is implemented currently |
JWT_SECRET |
- | JWT signing secret (required) |
DEMO_MODE |
false |
Enable demo login for hosted demos |
DEMO_USERNAME |
demo |
Demo login username |
DEMO_PASSWORD |
demo |
Demo login password |
DEMO_USER_EMAIL |
demo@opensprint.io |
Demo user email |
FEATURE_AUDIT_LOG |
false |
Reserved for future audit logging |
FEATURE_WEBHOOKS |
false |
Reserved for future webhook integrations |
| Feature | Status |
|---|---|
| Database | SQLite |
| Authentication | Built-in JWT |
| Deployment | Single Node container |
| Monitoring | Health endpoint and console logs |
| Backup | SQLite file/volume backup |
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ React SPA │◄──►│ Node.js API │◄──►│ SQLite │
│ (Frontend) │ │ (Backend) │ │ (Database) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
- User authentication system
- Project-based access control
- User management interface
- Custom workflows
- Time tracking
- Reports and analytics
- Email notifications
- SSO integration (SAML/OIDC)
- Advanced permissions
- Audit trails
- API integrations
- Kubernetes deployment
- Frontend: React 18, TypeScript, Tailwind CSS, shadcn/ui
- Backend: Node.js, Express, Prisma ORM
- Database: SQLite
- Infrastructure: Docker
- Fork the repository
- Create feature branch (
git checkout -b feature/amazing-feature) - Commit changes (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open Pull Request
# Unit tests
npm test
# Lint
npm run lint
# Production build
npm run build- Report security vulnerabilities via GitHub issues
- Use HTTPS/TLS at the deployment edge for data in transit
- Keep dependencies updated and review security advisories
- SQLite files should be protected with host filesystem permissions and backups
This project is licensed under the MIT License - see the LICENSE file for details.
- Community: GitHub Discussions
- Documentation: docs.opensprint.dev
- Roadmap Questions: GitHub Discussions
Made with ❤️ for the open source community