Learning Log Application

A Django-based collaborative learning platform

Project Overview

Learning Log is a full-stack web application that provides a collaborative learning platform where educators can create topics and students can contribute entries. Developed with Django and deployed on Heroku, this application demonstrates robust backend architecture and user-friendly design.

The platform features secure user authentication, topic management, entry creation and editing, and a responsive interface. Designed for educational environments, it facilitates organized classroom discussions and knowledge sharing.

View on GitHub

Project Details

Technology Stack

Python, Django, PostgreSQL, Bootstrap, HTML/CSS

Development Time

3 months (part-time)

Key Features

User authentication, Topic management, Entry creation, Editing functionality

Deployment

Heroku with PostgreSQL database

Application Demo

Learning Log in action

Example topic page showing entries from students

Application Screenshots

Learning Log Home Page
Home Page
Login Screen
Login Screen
Registration Screen
Registration Screen
Topic Entry
Topic with Entries

Key Features

Secure Authentication

Implemented Django's authentication system with password validation and session management.

Topic Management

Teachers can create topics, students can browse and contribute to relevant topics.

Entry Creation

Students can create and edit their entries with a user-friendly interface.

Authorization

Role-based access controls ensure users only modify their own content.

Technical Implementation

The application was built using Django's MVT architecture with PostgreSQL for data storage. Key technical components include:

Database Models

# models.py - Database schema from django.db import models from django.contrib.auth.models import User class Topic(models.Model): """A topic the user is learning about.""" text = models.CharField(max_length=200) date_added = models.DateTimeField(auto_now_add=True) owner = models.ForeignKey(User, on_delete=models.CASCADE) class Entry(models.Model): """Something specific learned about a topic.""" topic = models.ForeignKey(Topic, on_delete=models.CASCADE) text = models.TextField() date_added = models.DateTimeField(auto_now_add=True)

View Logic

# views.py - Protecting views with authentication from django.contrib.auth.decorators import login_required @login_required def edit_entry(request, entry_id): """Edit an existing entry with ownership check.""" entry = Entry.objects.get(id=entry_id) topic = entry.topic # Ensure the topic belongs to the current user if topic.owner != request.user: raise Http404("You are not authorized to edit this entry.")

Technology Stack

Python
Django
PostgreSQL
HTML5
CSS3
Bootstrap
Heroku
Git

Skills Demonstrated

Backend Development

Designed and implemented Django models, views, and authentication system.

Database Design

Created efficient relational database schema using Django ORM.

Deployment

Configured Heroku deployment with PostgreSQL and static file handling.

Security

Implemented authentication, authorization, and CSRF protection.

Back to Projects