Educational Platform

Agenda Virtual EIWA

Digital Academic Planner for Students

Transforming EIWA's physical agenda into a collaborative digital platform. Built with Django and PostgreSQL for students who need better organization tools.

Production-ready (v1.0.5)
Backend Architecture Focus
🗓 December 2024 - Present
agendavirtualeiwa.onrender.com

Role-Based Permissions

Hierarchical system with configurable access control

Real-Time Collaboration

Live notifications and instant updates across devices

Smart Calendar

Integrated calendar with workload tracking

The Problem

At EIWA (my school), students use physical agendas to track assignments and deadlines. However, distracted students often forget to write things down, lose track of tasks, or struggle to stay organized with paper-based systems.

The physical agenda works for some, but for students who need better organization tools, there was no digital alternative that understood our school's workflow and collaboration needs.

Agenda Virtual EIWA was created to solve this problem.

The Solution

Agenda Virtual EIWA is a digital platform that brings the physical agenda online, adding collaboration features and smart organization tools:

  • Never forget to write down assignments - classmates can share tasks instantly
  • Group collaboration with role-based permissions (Leader / Co-leader / Member)
  • Automatic reminders and notifications for upcoming deadlines
  • Calendar view to visualize workload and plan ahead
  • Individual task tracking - mark your own progress independently
  • Works on any device - phone, tablet, or computer

Technical Stack

Backend

  • Django 5.2.7
  • Python 3.11
  • Django REST Framework
  • Gunicorn & Uvicorn

Database

  • PostgreSQL (Neon DB)
  • 15+ optimized models
  • Relational design
  • Query optimization

Frontend

  • Vanilla JavaScript
  • Custom CSS (21 files)
  • Responsive design
  • Dark mode support

Infrastructure

  • Render.com hosting
  • WhiteNoise static files
  • SSL/HTTPS
  • Automated deployment

Key Features

01

Advanced Permission System

Hierarchical role system with Leader, Co-leader, and Member roles. Granular permissions for task creation, editing, and deletion with approval workflows.

02

Real-Time Notifications

Push notifications system with browser support, notification center, and badge counters. 16 different activity types tracked and notified.

03

Group Management

Unique invitation codes, join approval system, member warnings (3-strike system), and complete activity history logging.

04

Task System

Tasks with priorities, due dates, subject association, individual completion tracking, and collaborative editing with approval workflows.

05

Calendar Integration

Monthly calendar view with task visualization, filtering by group and subject, priority indicators, and deadline tracking.

06

Modern UI/UX

Responsive design, dark mode, smooth animations, toast notifications, keyboard shortcuts, and WCAG 2.1 accessibility compliance.

System Overview

User
Group
Task
Approval

Modular App Architecture

accounts
groups
tasks
subjects
calendar
notifications
tracking
core

Architecture Highlights

Custom User model (email authentication)
8 modular Django apps (separation of concerns)
15+ relational models
Approval system using request models
JSON-based activity logging
Optimized queries (select_related / prefetch_related)
PostgreSQL cloud deployment (Neon)
Production deployment on Render

Continuous Development & Versioning

EIWA is under active development. Below are major milestones that shaped the platform's evolution.

v1.0.5 CURRENT February 2026

Full Personalization & File System

  • Customizable SVG avatar system (71 unique avatars, 12 color themes)
  • Experimental document attachment system with permission layers
  • Multi-group unified dashboard view
  • Drag & Drop file upload with preview
  • Performance optimizations in unified task queries
v1.0.4 February 2026

Visual Polish & Error Handling

  • Dark mode color corrections for task headers and buttons
  • Custom error pages (404, 403, 500) with theme support
  • Improved visual consistency across the platform
v1.0.3 February 2026

Interactive Dashboard

  • Clickable statistics dashboard with smart filtering
  • Automatic task archiving system (30-day threshold)
  • Configurable productivity metrics
  • Improved visual hierarchy and UI feedback
v1.0.1 December 2024

Smart Moderation System

  • Intelligent content moderation with leet speak detection
  • Configurable moderation levels per group (Off, Censor, Block)
  • Weekly workload tracking in calendar
  • Improved group analytics and activity visualization
v1.0.0 December 2024

Initial Release

  • Collaborative task management with role-based permissions
  • Calendar integration with monthly and weekly views
  • Real-time notification system
  • PWA support with offline capabilities
  • Responsive design with dark mode

Beta testing feedback helped refine moderation, UX and personalization systems.

Real-World Usage

Currently being used by students at EIWA for daily academic organization.

15+
Active Students
8+
Study Groups
200+
Tasks Created
50+
Approval Requests

Platform has been actively used since December 2024, with continuous improvements based on real student feedback.

Key Engineering Decisions

Why modular apps?

Maintainability and separation of responsibilities. Each app handles a specific domain, making the codebase easier to navigate and scale.

Why PostgreSQL?

Better relational integrity and scalability. PostgreSQL's advanced features support complex queries and ensure data consistency.

Why custom role system?

Need for per-group configurable permissions. Django's built-in groups weren't flexible enough for dynamic, group-specific permission rules.

Why JSON metadata logging?

Flexible extensibility without schema explosion. Activity types can evolve without database migrations for each new field.

Trade-offs Considered

Why not use Django Groups?

Django's built-in Groups are global and static. We needed per-group dynamic permissions that could be configured by group leaders in real-time.

Why not NoSQL?

Strong relational integrity was required. Tasks, groups, users, and permissions have complex relationships that benefit from SQL's ACID guarantees.

Why not a frontend framework?

Vanilla JavaScript kept the stack simple and reduced complexity. For this use case, Django templates with progressive enhancement were sufficient.

Why not microservices?

Monolithic Django app was more appropriate for the scale. Microservices would add unnecessary complexity for a single-developer project.

Experimental Features

Transparent about innovation and ongoing development.

Experimental

File Attachment System

Document upload with permission layers, validation, and approval workflows. Currently in testing phase with active users.

Beta

Multi-Group Unified View

Dashboard that aggregates tasks and statistics across multiple groups. Recommended for single-group use while being refined.

In Progress

Offline Support

PWA capabilities with service workers for offline task viewing and synchronization when connection is restored.

Technical Challenges

Designing a granular permission system without conflicts

Creating a flexible permission model that could handle multiple roles and configurable settings while preventing permission conflicts and security holes.

Solution: Implemented hierarchical validation with permission checks at model, view, and template levels. Used Django's ORM to enforce database-level constraints.

Preventing N+1 query problems

As the application grew, inefficient database queries caused performance degradation, especially in list views with related objects.

Solution: Systematic use of select_related() and prefetch_related() throughout the codebase. Added database indexes on frequently queried fields.

Implementing approval workflows cleanly

Task creation and editing needed approval systems that were flexible enough to support different group configurations without code duplication.

Solution: Created separate request models (TaskRequest, TaskEditRequest) with JSON fields for proposed changes, enabling clean approval logic.

Maintaining accessibility standards (WCAG 2.1)

Ensuring the platform was usable by everyone, including users with disabilities, while maintaining a modern aesthetic.

Solution: Implemented keyboard navigation, ARIA labels, sufficient color contrast, and minimum touch target sizes throughout the interface.

Structuring scalable database relationships

Designing a database schema that could evolve without requiring major migrations or breaking existing functionality.

Solution: Used JSON fields for flexible metadata, proper foreign key relationships, and Django migrations for controlled schema evolution.

Lessons Learned

Design the database before building views
Modular structure prevents long-term chaos
Backend permission validation is critical
UX details matter as much as logic

Complexity Metrics

8
Django Apps
15+
Relational Models
150+
QA Verification Checks
16
Tracked Activity Types
3
Permission Hierarchy Levels
5
Major Versions

Successfully deployed and actively used by students and teachers for academic collaboration. The platform demonstrates proficiency in full-stack development, database design, and building scalable web applications with continuous iteration based on user feedback.

Planned Improvements

Google Calendar Integration

Sync tasks with external calendars for better workflow integration

Advanced Search System

Full-text search across tasks, groups, and subjects with filters

Enhanced Offline Mode

Complete offline functionality with background sync

File Attachments (Stable)

Move experimental file system to stable production release

Email Notifications

Configurable email alerts for important events and deadlines

Analytics Dashboard

Detailed productivity metrics and group performance insights

Next Project

SouthernPOS

Cloud-based POS system with multi-tenant architecture for restaurants and retail businesses

View Project