- π About the Project
- β¨ Features
- π Tech Stack
- ποΈ Architecture
- π Getting Started
- π οΈ Development
- π§ͺ Testing
- π¦ Deployment
- π€ Contributing
- π¨βπ» Developer
- π Contact
- π License
TaskNote is a full-stack productivity application designed for managing tasks and notes with simplicity and effectiveness in mind. Originally created to address personal productivity needs, it has evolved into a comprehensive, open-source solution featuring a modern tech stack and enterprise-grade architecture.
The project was born from a month-long technical challenge and has since grown to include robust authentication, internationalization support, responsive design, and comprehensive testing coverage.
- Task Management: Create, edit, delete, and organize TODO items with due dates and priority levels
- Note Taking: Rich text notes with Markdown support for better formatting
- Smart Search: Full-text search across tasks and notes with real-time filtering
- User Authentication: Secure JWT-based authentication with automatic token refresh
- Internationalization: Multi-language support (English, Portuguese, Spanish, Russian)
- Responsive Design: Mobile-first approach with Bootstrap 5 and dark/light theme support
- Data Visualization: Task completion charts and productivity analytics
- File Attachments: URL attachments for tasks and notes
- Tagging System:
#tagsupport for better organization - Mobile App: Native mobile applications for iOS and Android with PWA plugin
- Collaboration: Share tasks and notes with other users
- Advanced Filters: Enhanced search with date ranges, priority levels, and status filters
- Notifications: Email and push notifications for due dates and reminders
- Framework: React 19 with TypeScript for type safety
- Build Tool: Vite for fast development and optimized production builds
- Testing: Vitest with React Testing Library and comprehensive coverage reporting
- Styling: Bootstrap 5 with custom SCSS and theme support
- State Management: React Context API for authentication and sidebar state
- Routing: React Router 7 with dynamic route configuration
- Internationalization: i18next with automatic language detection
- API Client: Centralized API service with automatic authentication headers
- Framework: Spring Boot 4.x.x with Java 25
- Security: Spring Security with JWT authentication and refresh tokens
- Database: PostgreSQL with JPA/Hibernate ORM
- Migration: Flyway for database schema versioning
- Documentation: OpenAPI/Swagger UI for API documentation
- Testing: JUnit with separate unit and integration test suites
- Code Quality: Checkstyle, JaCoCo coverage (75% minimum), Maven Enforcer
- Build Options: Traditional JAR or GraalVM native image compilation
- Database: PostgreSQL with optimized indexes and constraints
- Containerization: Docker and Docker Compose for development environment
- Web Server: Caddy for reverse proxy and SSL termination
- CI/CD: GitHub Actions with automated testing and quality gates
tasknote/
βββ client/ # React TypeScript frontend
βββ server/ # Java Spring Boot REST API
βββ tools/ # Development and deployment scripts
βββ docker-compose.yml
- Component Structure: Modular components with TypeScript interfaces
- Authentication Flow: JWT tokens with 2-minute refresh intervals
- Theme System: CSS custom properties for dark/light mode switching
- Responsive Layout: Mobile-first design with sidebar navigation
- Error Handling: Centralized error boundary and user feedback
- RESTful API: Clean REST endpoints with proper HTTP status codes
- Security Layer: JWT validation, CORS configuration, and input validation
- Service Layer: Business logic separation with transaction management
- Repository Pattern: Data access abstraction with custom queries
- Email Service: Template-based email notifications for user actions
- Docker
- Docker Compose
- Task (
brew install go-task/npm install -g @go-task/cli) - Doppler CLI (
brew install dopplerhq/cli/doppler)
# 1. Authenticate with Doppler and link the project
doppler login
doppler setup # uses doppler.yaml to link to the shell-whats projecttask dev-runThis exports the public vars from the dev_tokens Doppler config and starts the server in watch mode with secrets injected from dev_secrets. No .env file needed.
# Build the backend
task docker-build-api
# Build the frontend
task docker-build-web./tools/check-frontend.sh./tools/check-backend.shWe welcome contributions from the community! This project follows the Fork & Merge workflow.
- Fork the Project on GitHub
- Clone your fork locally
git clone https://github.com/YOUR_USERNAME/tasknote.git
- Create a feature branch
git checkout -b feature/amazing-feature
- Make your changes and ensure they follow the project standards
- Run quality checks
bash tools/check-frontend.sh bash tools/check-backend.sh
- Commit your changes
git commit -m 'Add some amazing feature' - Push to your fork
git push origin feature/amazing-feature
- Open a Pull Request with a detailed description
- Follow existing code conventions and patterns
- Write tests for new functionality
- Update documentation when necessary
- Ensure all quality checks pass
- Keep commits focused and descriptive
For detailed setup instructions and development workflows, see CONTRIBUTING.md.
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- β Freedom to use: Use the software for any purpose
- β Freedom to study: Access and modify the source code
- β Freedom to share: Distribute copies of the software
- β Freedom to improve: Distribute modified versions
Copyleft: Any derivative work must also be open source under GPL v3.0
β Star this repository if you find it helpful! β