A complete full-stack mobile Todo application built with React Native frontend and Node.js backend, featuring authentication, CRUD operations, and modern UI/UX design.
- Backend API: https://todoapp-2zsx.onrender.com/api
- Database: PostgreSQL on Render
- Status: Fully deployed and working
- CI/CD: Automated deployment via GitHub Actions
- Auto-Deploy: Every push to main triggers automatic deployment
- Authentication: Login/Signup with JWT tokens
- Todo Management: Complete CRUD operations
- Modern UI: Clean, responsive design with animations
- Theme Switching: Light and dark mode support
- State Management: MobX for reactive state management
- Navigation: React Navigation with stack and tab navigators
- Priority System: Low, medium, high priority todos
- Profile Management: Update user profile information
- RESTful APIs: Complete CRUD operations for todos and authentication
- JWT Authentication: Secure token-based authentication
- PostgreSQL Database: Robust data persistence with Sequelize ORM
- Input Validation: Comprehensive validation and error handling
- Security: Helmet, CORS, and bcrypt for password hashing
- Middleware: Authentication middleware for protected routes
- Docker Support: Containerized application for easy deployment
- CI/CD Pipeline: Automated GitHub Actions workflow with testing and deployment
- Auto-Deployment: Automatic deployment to Render on every push to main branch
- React Native 0.81.5
- TypeScript for type safety
- MobX for state management
- React Navigation for routing
- Axios for HTTP requests
- AsyncStorage for local data persistence
- Node.js with Express.js
- PostgreSQL database
- Sequelize ORM
- JWT for authentication
- bcryptjs for password hashing
- Helmet for security headers
- CORS for cross-origin requests
- Morgan for logging
- Docker & Docker Compose
- Render for deployment
- ESLint & Prettier for code quality
todo-app/
├── backend/ # Node.js backend
│ ├── middleware/ # Authentication middleware
│ ├── models/ # Sequelize models (User, Todo)
│ ├── routes/ # API routes (auth, todos)
│ ├── server.js # Main server file
│ └── package.json # Backend dependencies
├── frontend/ # React Native frontend
│ └── TodoApp/
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── navigation/ # Navigation setup
│ │ ├── screens/ # App screens
│ │ ├── services/ # API services
│ │ ├── stores/ # MobX stores
│ │ ├── types/ # TypeScript types
│ │ └── utils/ # Utility functions
│ ├── android/ # Android project
│ ├── ios/ # iOS project
│ ├── App.tsx # Main app component
│ └── package.json # Frontend dependencies
├── docker-compose.yml # Development setup
├── docker-compose.prod.yml # Production setup
├── Dockerfile # Docker configuration
├── render.yaml # Render deployment config
└── README.md # This file
- Node.js (v18 or higher)
- PostgreSQL (v12 or higher)
- React Native development environment
- Docker & Docker Compose (optional)
-
Clone the repository
git clone https://github.com/ruchidavda1/todoapp.git cd todoapp -
Start the application with Docker
# Development mode docker-compose up -d # Production mode docker-compose -f docker-compose.prod.yml up -d
-
The backend will be available at:
- API: http://localhost:3000
- Health check: http://localhost:3000/api/health
-
Navigate to backend directory
cd backend -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env # Edit .env with your database credentials -
Start the server
# Development npm run dev # Production npm start
-
Navigate to frontend directory
cd frontend/TodoApp -
Install dependencies
npm install
-
Install iOS dependencies (iOS only)
cd ios && pod install && cd ..
-
Start the React Native app
# iOS npx react-native run-ios --simulator="iPhone 15" (example) # Android npx react-native run-android
POST /api/auth/signup- Create new user accountPOST /api/auth/login- User loginGET /api/auth/profile- Get user profile (protected)PUT /api/auth/profile- Update user profile (protected)
GET /api/todos- Get all todos (protected)POST /api/todos- Create new todo (protected)GET /api/todos/:id- Get specific todo (protected)PUT /api/todos/:id- Update todo (protected)PATCH /api/todos/:id/toggle- Toggle todo completion (protected)DELETE /api/todos/:id- Delete todo (protected)DELETE /api/todos/completed/all- Delete all completed todos (protected)
page- Page number for paginationlimit- Number of items per pagecompleted- Filter by completion status (true/false)priority- Filter by priority (low/medium/high)search- Search in title and description
- JWT token-based authentication
- Secure password hashing with bcrypt
- User profile management
- Token validation middleware
- Complete CRUD operations
- Priority levels (low, medium, high)
- Completion status tracking
- Search and filtering capabilities
- Bulk operations (delete all completed)
- Pagination support
- Smooth navigation with React Navigation
- Theme switching (light/dark mode)
- Loading states and error handling
- Responsive design for different screen sizes
- Real-time backend synchronization
# Start development environment
docker-compose up -d
# Start production environment
docker-compose -f docker-compose.prod.yml up -d
# View logs
docker-compose logs -f backend
# Stop services
docker-compose down
# Rebuild and start
docker-compose up --build -d
# Remove volumes (reset database)
docker-compose down -vcd backend
npm testcd frontend/TodoApp
npm test- GitHub Actions: Automated testing and deployment on every push to main
- Render Integration: Automatic deployment to production environment
- Zero-downtime: Seamless updates with health checks
- Live Status: https://todoapp-2zsx.onrender.com/api/health
- Code Push → GitHub repository
- Automated Testing → Backend tests with PostgreSQL
- Docker Build → Containerized application
- Deploy to Render → Live production environment
- Health Verification → Automatic status checks
The application is configured for deployment on Render using the included render.yaml configuration.
NODE_ENV=production
JWT_SECRET=your-super-secret-32-character-key
JWT_EXPIRES_IN=7d
DATABASE_URL=postgresql://user:password@host:port/databaseThe API service automatically switches between development and production URLs:
- Development:
http://localhost:3000/api - Production:
https://todoapp-2zsx.onrender.com/api
- JWT token authentication
- Password hashing with bcrypt
- Input validation and sanitization
- CORS protection
- Security headers with Helmet
- SQL injection prevention with Sequelize ORM
This project was developed with assistance from Claude 4 Sonnet AI(Cursor IDE), utilizing advanced AI capabilities for:
- Architecture design and best practices implementation
- Code optimization and debugging
- Comprehensive testing strategies
- Documentation and deployment automation
Built with modern full-stack development practices









