Skip to content

Code-Institute-Submissions/Weather-To-Do_List

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

389 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation


✨ Welcome to Weather To-Do List ✨

Code Institute Individual Capstone Project / Final Individual Fullstack Project

πŸ‘‰ View the live project here:

image Stay organised with a to‑do list that adapts to the weather. This app combines your tasks with real‑time forecasts so you can plan smarter, avoid surprises, and make the most of every day. Whether it’s sunshine, rain, or anything in between, your schedule adjusts automatically to keep you on track.

πŸ“œTable of ContentsπŸ“œ


  1. Project Overview
  2. Technologies Used
  3. Features
  4. Design
  5. Testing
  6. Deployment
  7. Credits

❄️ 1. WeatherToDoList ❄️


Project Overview / MVP

WeatherToDoList is a Django web app that should include:

  • user authentication
  • a live weather search experience for cities worldwide
  • a calendar-backed task manager for any day of the year
  • task categories, status tracking, CRUD operations, sharing, and email reminders

πŸ› οΈ 2. Tech Stack / Technologies Used πŸ› οΈ


Technologies Languages / Tools
Primary Framework 🐎 Django (Web framework)
Front-end πŸŒπŸ“ HTML, 🎨CSS, ⚑JavaScript
Language Environment 🐍 Python
Database Interface 🐘 PostgreSQL
Web Server πŸš€ Gunicorn (WSGI HTTP server for production)
Static Files ❄️ WhiteNoiseΒ  (serves static files in Django)
Database Configuration πŸ”— dj-database-url (env‑based DB configuration)
HTTP Client πŸ“‘ Requests (API calls)
Interface Specs βš™οΈ asgiref (async Python web services standard)
External APIs 🌀️ Open-Meteo geocoding and forecast APIs

πŸ‘¨β€πŸ’» 3. Features / User Stories πŸ‘¨β€πŸ’»


  • As a user of the site I should be able to:
    • βœ…Sign up, log in, and log out with Django authentication
    • βœ…Create, read, update, delete, and share tasks
    • βœ…Organize tasks by work, personal, shopping, business, and wish list
    • βœ…Mark tasks as in progress or done
    • βœ…Configure recurring tasks (daily/weekly/monthly/yearly)
    • βœ…Browse tasks on a monthly calendar and inspect a selected day
    • βœ…Upload and remove file attachments per task
    • βœ…Search for cities globally with autocomplete
    • βœ…Display animated weather scenes for clear, cloudy, rain, snow, storm, and mist conditions
    • βœ…Send share invite emails with accept/decline workflow and scheduled task reminder emails

As an admin I should be able to:

  • βœ…Save user emails in the database through Django's user model

πŸ‘‰ Link to Kanban board of User Stories : πŸ‘‰ https://github.com/users/Michael-77cm/projects/5 πŸ‘ˆ

Additional Features / Future enhancements:

Notifications: Within the website notifications are included to give feedback and enhance the user experience. With a pop up at the top of the screen a user is notified once:

A task is Created image A task is Edited image An attempt to delete a task is made

image

A task is Deleted image Additional Features:

  • Three vibes on the weather app to select from, these would be: realistic, playful or dramatic.
  • A tab that shows you what today
  • A tab that shows you the time with the seconds counting down
  • As a requirement without filling the Title field a user is unable create a task.

Future Enhancements:

  • Being able to create a Large number of tasks in a day
  • Being able to click to the next task as an added functionality and in order to be space efficient.

4. 🎨 Design / User Experience 🎨


πŸ“ˆ Wireframe Diagram πŸ“ˆ

image

πŸ“° Entity Relationship Diagram (ERD) πŸ“°

I have made some changes to the model as it developed, such as removing the created at and updated on timestamps. This is because I didn't believe they were necessary or added to the UX. image

🌦️ User Flow Diagram β€” Weather To‑Do List App

This diagram shows how a typical user moves through the website from entry β†’ authentication β†’ dashboard β†’ tasks & weather features. user flow diagram weather todo list


1. Landing Page (Home)

  • User sees marketing message: β€œOne place for weather, calendar planning, and shared tasks.”

  • Options: β€’ Log In
    β€’ Create Account (Sign Up)

     ↓
    

2. Authentication β”œβ”€β”€ Log In β”‚ β€’ Enter username + password
β”‚ β€’ Option: Forgot password β†’ Password Reset Page
β”‚ β€’ On success β†’ Dashboard
β”‚ └── Sign Up β€’ Create new account
β€’ On success β†’ Log In β†’ Dashboard

↓

3. Dashboard

  • Displays: β€’ Weather information (via Open‑Meteo API)
    β€’ Calendar planning tools
    β€’ Shared task lists
    β€’ Email notifications for task reminders β€’ Email notifications for group tasks if there are collaborators

    ↓
    

4. Core User Actions β”œβ”€β”€ View Weather β”‚ β€’ Location-based forecast
β”‚ β€’ Geocoding + forecast API calls
β”‚ β”œβ”€β”€ Manage Tasks β”‚ β€’ Add tasks
β”‚ β€’ Edit tasks
β”‚ β€’ Delete tasks
β”‚ β€’ Mark tasks complete
β”‚ β€’ View previous completed tasks
β”‚ β€’ Shared group tasks sync with collaborators
β”‚ β”œβ”€β”€ Use Calendar β”‚ β€’ View daily/weekly/monthly plans
β”‚ β€’ Add events
β”‚ β€’ Organize personal + work items
β”‚ └── Receive Notifications β€’ Email alerts for task reminders β€’ Email shared task updates

↓

5. Account Management

  • Change password
  • Log out
  • Return to dashboard anytime

5. Testing


πŸ› οΈManual TestingπŸ› οΈ

Feature Test Case Expected Result Actual Result
Sign up User registers with valid credentials Account is created and verification sent βœ…Pass
Login Existing user logs in User redirected to dashboard βœ…Pass
Create Task User creates a task Task appears in selected category βœ…Pass
Edit Task User edits own task Changes save successfully βœ…Pass
Delete Task User deletes own task Task gets deleted from todolist βœ…Pass
Share Task User shares a task Recipients receive an email with details to view the task βœ…Pass
Complet Task User clicks on task complete Task moves to completed section βœ…Pass
Delete Task User deletes own task Thread removed from forum βœ…Pass
Comment create User adds comment Comment appears in thread βœ…Pass
Recurring Task User ticks box for recurring task Task appears multiple times on the calendar for the tasks duration βœ…Pass
Upload Attachment User clicks on upload attachment Attachements gets uploaded to the task βœ…Pass
Delete Attachment User clicks deletes on an attachment Attachment gets deleted βœ…Pass
Search a City User starts typing the name of a city Autocomplete helps to displays the full name of the city βœ…Pass
Date & Time User logs into the dashboard Date & Time is displayed βœ…Pass
Display Weather condition User clicks on search button after typing a city The weather in that city appears βœ…Pass
Change of Weather Vibes User clicks on realistic, playful or dramatic vibe Weather conditions changes to realistic, playful or dramatic vibe βœ…Pass

Lighthouse Test image

HTML/CSS/JAVASCRIPT VALIDATION TEST

HTML Validator Screenshot

HTML Validator Screenshot

CSS Validator Screenshot

CSS Validator Screenshot

HTML Validator Screenshot

JS Validator Screenshot

Automated Testing

Category Test Class Tests Focus Areas Status
Forms TaskFormValidationTests 4 Title requirements, whitespace, recurrence logic βœ… Pass
Models TaskModelTests 3 Creation, is_done and is_recurring properties βœ… Pass
Identity SignUpTests 3 Email validation, duplicates, DB persistence βœ… Pass
Security AuthenticationTests 3 Login redirects, dashboard access, logout βœ… Pass
Data TaskCRUDTests 4 Create, Update, Delete, Toggle status βœ… Pass
AuthZ PermissionTests 3 Cross-user access denial, ownership βœ… Pass
API CitySearchAPITests 2 Query length, result formatting βœ… Pass
API WeatherAPITests 2 Parameters, response structure βœ… Pass
Total 8 Categories 24 100%
  • Key Coverage:
    • Form validation & error handling
    • Model CRUD operations
    • User authentication & session management
    • Task-level permission enforcement
    • External API integration
    • Database persistence

6. Deployment


The project is currently deployed on Heroku, you can find it by following the link below: πŸ‘‡ πŸ‘‡ πŸ‘‡ πŸ‘‡ πŸ‘‡

πŸ‘‰(https://weather-to-do-list-e7b16ee62076.herokuapp.com/) πŸ‘ˆ

Cloning and Setting Up Locally Follow these steps to clone the repository and set it up on your local machine:

Clone the Repository:

Open your terminal and run: git clone https://github.com/Michael-77cm/Weather-To-Do_List.git cd weather-to-do_List

Set Up a Virtual Environment: Create and activate a virtual environment:

python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

Install Dependencies: Install the required Python packages:

pip install -r requirements.txt

Set Up Environment Variables:

  • Create a .env file in the root directory and add the following:
SECRET_KEY=your-secret-key
DATABASE_URL=sqlite:///db.sqlite3  # Or your database URL
DEBUG=True

Run Migrations: Apply database migrations:

python manage.py migrate

Run the Development Server: Start the Django development server:

python manage.py runserver

Access the App: Open your browser and go to:

http://127.0.0.1:8000/

Your app is now running locally!

DEPLOYING TO HEROKU

Open Settings.py and set DEBUG back to False
Git add, commit and push your updated code to Github 
Return to Heroku dashboard, go to the Deploy tab and click on deploy from main branch

Once deployed,

from settings tab click on Reveal Config Vars
Add Database_url and the value of the PostgreSQL from CI url

Now your deployed app is connected to your PostgreSQL cloud database.

πŸ“– 7. Credits πŸ“–


Use of Ai AI and Github Copit were used throughout this project to generate the basic structure of code, debug and resolve code errors, automate repetitive tasks, create automated tests on the website and improve the responsiveness of the website. I manually reviewed the code for accuracy, suitability, ensured there were no security issues and made changes to the code before deployment.

Author: Michael Bello GitHub: https://github.com/Michael-77cm/

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 39.3%
  • HTML 28.8%
  • CSS 22.2%
  • JavaScript 9.7%