π NoteLink is a secure and scalable full-stack note management platform built for seamless collaboration. It features a Go backend with MongoDB database and a modern React frontend, providing a complete solution for personal and team note-taking.
- User Authentication: Secure JWT-based authentication with bcrypt password hashing
- Note Management: Complete CRUD operations with automatic timestamps
- Real-time Search: Full-text search across note titles and content
- Note Sharing: Share notes with other users seamlessly
- Responsive Design: Mobile-first responsive UI/UX
- Password Security: bcrypt hashing with configurable rounds
- JWT Authentication: Secure token-based authentication
- Rate Limiting: Built-in rate limiting and DDoS protection
- Input Validation: Comprehensive validation and sanitization
- CORS Support: Configurable cross-origin resource sharing
- Docker Support: Multi-container deployment with Docker Compose
- CI/CD Pipeline: GitHub Actions for automated testing and deployment
- Health Checks: Comprehensive health monitoring
- Load Balancing: Nginx reverse proxy with SSL termination
- Monitoring: Prometheus and Grafana integration
- Language: Go 1.21.3
- Framework: Gorilla Mux
- Database: MongoDB 6.0
- Authentication: JWT (JSON Web Tokens)
- Password Hashing: bcrypt
- Rate Limiting: golang.org/x/time/rate
- Framework: React 18
- Routing: React Router v6
- HTTP Client: Axios
- Styling: Custom CSS with responsive design
- State Management: React Hooks and Context API
- Containerization: Docker & Docker Compose
- Reverse Proxy: Nginx
- Monitoring: Prometheus + Grafana
- CI/CD: GitHub Actions
- SSL/TLS: Let's Encrypt ready
- Docker and Docker Compose
- Git
# Clone the repository
git clone https://github.com/priyanshu360/NoteLink.git
cd NoteLink
# Start development environment
docker-compose -f docker-compose.dev.yml up --build
# View the application
# Frontend: http://localhost:3000
# Backend API: http://localhost:8080
# Database: mongodb://admin:password123@localhost:27017/testdb# Configure environment variables
cp .env.example .env
# Edit .env with your production values
# Deploy with monitoring and scaling
docker-compose --profile production up --build -d
# View monitoring dashboards
# Grafana: http://localhost:3001
# Prometheus: http://localhost:9090- Modern Design: Clean, intuitive interface with smooth animations
- Responsive Layout: Mobile-first design that works on all devices
- Dark/Light Mode: Theme support (coming soon)
- Real-time Updates: Live updates across components
- Authentication: Login and signup with form validation
- Dashboard: Overview of all notes with quick actions
- Note Editor: Rich text editor for creating and editing notes
- Search: Advanced search with filters and suggestions
- Navigation: Clean navigation with user context
POST /api/auth/signup- Create new user accountPOST /api/auth/login- Authenticate user and get JWT token
GET /api/notes- Get all user notesGET /api/notes/{id}- Get specific notePOST /api/notes- Create new notePUT /api/notes/{id}- Update existing noteDELETE /api/notes/{id}- Delete notePOST /api/notes/{id}/share- Share note with userGET /api/search?q={query}- Search notes
- JWT Authentication: All protected endpoints require valid JWT token
- Rate Limiting: Configurable rate limits per endpoint
- Input Validation: Comprehensive validation for all inputs
- CORS: Configurable CORS policies
- Backend Health:
GET /health- Service health status - Frontend Health:
GET /health- Application health - Database Health: MongoDB ping checks
- Request Metrics: Response times, error rates, request counts
- System Metrics: CPU, memory, disk usage
- Custom Metrics: Active users, note operations
- Grafana: Pre-built dashboards for application monitoring
- Prometheus: Time-series database for metrics storage
# Run all tests
go test ./...
# Run tests with coverage
go test -v -coverprofile=coverage.out ./...
go tool cover -html=coverage.out -o coverage.htmlcd frontend
npm test # Run tests
npm run test:coverage # Run with coverage
npm run build # Build for production# Start test environment
docker-compose -f docker-compose.test.yml up --build
# Run integration tests
npm run test:e2e- Multi-stage build: Optimized for production
- Base Image: Alpine Linux for minimal size
- Security: Non-root user, minimal attack surface
- Build Stage: Node.js for building React app
- Production Stage: Nginx for serving static files
- Optimization: Gzip compression, static asset caching
- Environment Variables: All secrets managed via environment variables
- HTTPS: SSL/TLS encryption with automatic certificate renewal
- Firewall: Configurable firewall rules
- Monitoring: Security event logging and alerting
- Encryption: Data encrypted at rest and in transit
- Backups: Automated backup strategy with retention
- Access Control: Role-based access control (RBAC) ready
- Indexes: Optimized indexes for common queries
- Connection Pooling: Efficient database connection management
- Caching: Redis integration for frequently accessed data
- Code Splitting: Lazy loading of components
- Asset Optimization: Image compression, minification
- Caching: Browser caching for static assets
- Unit Tests: Backend and frontend unit tests
- Integration Tests: API endpoint testing
- Security Scans: Automated vulnerability scanning
- Performance Tests: Load testing and performance benchmarks
- Multi-Environment: Development, staging, production deployments
- Rolling Updates: Zero-downtime deployments
- Rollback: Automatic rollback on deployment failures
- Monitoring: Real-time deployment monitoring
# Install dependencies
make deps
# Run development server
make run
# Run tests
make test
# Build for production
make build- Linting: Automated code quality checks
- Formatting: Consistent code formatting
- Pre-commit Hooks: Automated checks before commits
- OpenAPI/Swagger: Interactive API documentation
- Postman Collection: Ready-to-use API collection
- Examples: Comprehensive request/response examples
- Architecture: System architecture and design decisions
- Contributing: Guidelines for contributing to the project
- Troubleshooting: Common issues and solutions
- Development:
docker-compose.dev.yml - Production:
docker-compose.prod.yml - Monitoring: Prometheus + Grafana stack
# Deploy to Kubernetes
kubectl apply -f k8s/- AWS: ECS/EKS deployment ready
- Google Cloud: GKE deployment configuration
- Azure: AKS deployment templates
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests for new functionality
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
- React Team: For the amazing React framework
- Go Team: For the powerful Go language
- MongoDB: For the flexible database solution
- Open Source Community: For all the amazing tools and libraries
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@notelink.com
Made with β€οΈ by the NoteLink Team