TaskNote
📋 Table of Contents
- 📝 About the Project
- ✨ Features
- 🚀 Tech Stack
- 🏗️ Architecture
- 🚀 Getting Started
- 🛠️ Development
- 🧪 Testing
- 📦 Deployment
- 🤝 Contributing
- 👨💻 Developer
- 📞 Contact
- 📄 License
📝 About the Project
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.
✨ Features
Current Features
- 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
Upcoming Features
- Advanced Filters: Enhanced search with date ranges, priority levels, and status filters
- Notifications: Email and push notifications for due dates and reminders
🚀 Tech Stack
Frontend (React & TypeScript)
- 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
Backend (Java & Spring Boot)
- 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 & Infrastructure
- 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
🏗️ Architecture
Monorepo Structure
tasknote/
├── client/ # React TypeScript frontend
├── server/ # Java Spring Boot REST API
├── tools/ # Development and deployment scripts
└── docker-compose.yml
Frontend Architecture
- 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
Backend Architecture
- 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
🚀 Getting Started
Prerequisites
- Docker
- Docker Compose
- Task (
brew install go-task/npm install -g @go-task/cli) - Doppler CLI (
brew install dopplerhq/cli/doppler)
Setup
# 1. Authenticate with Doppler and link the project
doppler login
doppler setup # uses doppler.yaml to link to the shell-whats project
Running locally
task dev-run
This 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.
Building the Docker images
# Build the backend
task docker-build-api
# Build the frontend
task docker-build-web
🧪 Testing & Checks
Frontend Testing
./tools/check-frontend.sh
Backend Testing
./tools/check-backend.sh
🤝 Contributing
We welcome contributions from the community! This project follows the Fork & Merge workflow.
How to Contribute
- 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
Development Guidelines
- 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.
📄 License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
What this means:
- ✅ 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! ⭐