A full-stack web application that provides a suite of modular productivity tools to help users manage their tasks and time efficiently. The project is built with a Django backend and a React frontend, emphasizing scalability, security, and user-centric customization.
The application offers a range of widgets that users can add to their dashboard:
- Clock: Displays the current time.
- To-Do List: A task manager for organizing daily activities.
- Calculator: A simple calculator for quick calculations.
- Notes: A widget for storing short notes or ideas.
- Pomodoro Timer: A time management tool based on the Pomodoro Technique.
- Bookmarks: Save and access your favorite links.
- Weather Forecast: Displays weather information using an external API (OpenWeatherMap) based on the user’s location.
- Magic Link Authentication: Users can log in using a one-time link sent to their email, eliminating the need for passwords.
- Token-Based Authentication: Uses Django REST Framework’s token system to manage secure user sessions for accessing and modifying personal data.
- PostgreSQL: Stores user data, widget configurations, and preferences.
- CRUD Operations: Full support for creating, reading, updating, and deleting user preferences related to widgets.
- Data Validation: Ensures user inputs are sanitized and correctly formatted before being saved to the database.
- Users can configure widget settings (e.g., weather location, to-do list items) with changes stored in the database and reloaded on login.
- Partial updates are made via PATCH requests to improve performance by modifying only the necessary fields.
- Framework: Django with Django REST Framework (DRF) for creating RESTful APIs.
- Database: PostgreSQL (SQLite used for local development).
- Authentication: Token-based authentication for securing API endpoints.
- Framework: React with functional components and hooks.
- State Management: Local state and API calls to dynamically manage widget data.
- UI: Modular, reusable widget components designed for easy customization and extension.
- Backend: Django, Django REST Framework
- Frontend: React, HTML, CSS, JavaScript
- Database: PostgreSQL (SQLite for local development)
- Authentication: Token-based Authentication (DRF)
- Weather API: OpenWeatherMap (for weather forecast widget)
- Python 3.x
- Node.js and npm
- PostgreSQL (or SQLite for local development)
- Clone the repository:
git clone https://github.com/ericji1326/widgets.git cd widgets/backend - Create a virtual environment and install dependencies:
python3 -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate pip install -r requirements.txt
- Apply database migrations:
python manage.py migrate
- Run: python manage.py runserver
- Navigate to the frontend directory:
cd ../frontend - Install dependencies:
npm install
- Run:
npm start