A sleek, secure, and feature-rich Todo List application built with React and Ruby on Rails. This project demonstrates modern web development practices, including authentication, user-specific data, JWT, and a beautiful dark/light theme toggle.
- 📝 Create, read, update, and delete todos
- 🔒 User authentication (JWT-based, secure)
- 👤 User-specific todo lists
- ✅ Mark todos as complete/incomplete
- 🏷️ Categories and priorities for todos
- 🎨 Modern, responsive, and mobile-friendly design
- 🌗 Dark/Light theme toggle
- ⌨️ Keyboard support (Enter to add todos)
- 📱 Mobile-friendly interface
- ⚡ Real-time updates
- 🎯 Input validation
- 🎭 Smooth animations and transitions
| Light Mode | Dark Mode |
|---|---|
![]() |
![]() |
| Login | Register |
|---|---|
![]() |
![]() |
- React 19.1.0
- React Icons
- Axios for API calls
- React Router DOM
- Modern CSS with Flexbox & CSS variables
- Responsive Design
- Ruby on Rails 8.0
- JWT for authentication
- RESTful API architecture
- SQLite (default) or PostgreSQL
- CORS enabled for cross-origin requests
TodoList/
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── api/ # API integration
│ │ └── styles/ # CSS styles
│ └── public/ # Static files
│
└── backend/ # Ruby on Rails backend
├── app/
│ ├── controllers/ # API controllers
│ └── models/ # Database models
└── config/ # Rails configuration
- Node.js (v14 or higher)
- Ruby (v3.0 or higher)
- Rails (v8.0 or higher)
- SQLite or PostgreSQL
-
Clone the repository
git clone https://github.com/yourusername/TodoList.git cd TodoList -
Set up the backend
cd backend bundle install rails db:drop db:create db:migrate rails server -
Set up the frontend
cd frontend npm install npm start
The application will be available at:
- Frontend: http://localhost:3001
- Backend: http://localhost:3000
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/auth/register | Register a new user |
| POST | /api/auth/login | Login and get JWT token |
| GET | /api/todos | Get all todos for current user |
| POST | /api/todos | Create a new todo (auth required) |
| PATCH | /api/todos/:id/update_completed | Update todo completion status |
| DELETE | /api/todos/:id | Delete a todo |
- Register a new account or login with an existing one.
- Add a new todo by typing in the input field and pressing Enter or clicking "Add Todo".
- Mark a todo as complete by clicking the checkbox.
- Delete a todo by clicking the delete icon.
- Toggle between dark and light mode using the theme button.
- All changes are automatically saved and are user-specific.
- Clean and minimalist design
- Smooth hover effects and transitions
- Responsive layout for all screen sizes
- Visual feedback for user actions
- Intuitive interface with clear affordances
- Dark/Light theme toggle
- Passwords are securely hashed (bcrypt)
- JWT-based authentication for all API requests
- User data is isolated and protected
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the project
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Amirhossein Mansouri
- React.js community
- Ruby on Rails community
- All contributors who have helped shape this project
⭐️ If you like this project, please give it a star on GitHub!



