A web-based reading list manager for ZipCode students and instructors.
A copilot-assisted app
ZipCodeReader is a comprehensive reading assignment management system designed for educational environments. It enables instructors to assign reading materials to students and allows students to track their progress through a user-friendly web interface.
- Assignment Creation: Create reading assignments using a simple web-based form
- URL-based Assignments: Initially support web page URLs as reading materials
- Student Management: Assign readings to individual students or groups
- Progress Tracking: Monitor student completion rates and reading progress
- Assignment Organization: Categorize and organize assignments by course, topic, or difficulty
- GitHub OAuth2 Authentication: Secure login using GitHub credentials
- Personal Dashboard: View all assigned readings in one place
- Progress Tracking: Check off completed assignments and track reading progress
- Assignment Details: Access reading materials and view assignment requirements
- Reading History: View completed assignments and reading statistics
- GitHub OAuth2 integration for secure user authentication
- Role-based access control (Student vs Instructor)
- Session management and secure logout
- User profiles linked to GitHub accounts
- Assignment tracking and completion status
- Reading progress persistence
- Assignment metadata (due dates, categories, etc.)
- Responsive web design for desktop and mobile access
- Intuitive forms for assignment creation
- Clean, accessible student dashboard
- Real-time progress updates
- As an instructor, I want to create reading assignments so that I can assign materials to my students
- As an instructor, I want to assign readings to specific students or groups so that I can customize learning paths
- As an instructor, I want to track student progress so that I can identify who needs additional support
- As an instructor, I want to organize assignments by category so that I can manage my curriculum effectively
- As a student, I want to log in with my GitHub account so that I can securely access my assignments
- As a student, I want to see all my assigned readings in one place so that I can manage my workload
- As a student, I want to mark assignments as complete so that I can track my progress
- As a student, I want to access reading materials easily so that I can complete my assignments efficiently
- Modern web framework (React, Vue, or similar)
- Responsive CSS framework
- GitHub OAuth2 client integration
- Real-time updates for assignment status
- RESTful API or GraphQL endpoint
- GitHub OAuth2 server integration
- Database for user and assignment management
- Session management and security
- Users: GitHub ID, role (student/instructor), profile information
- Assignments: Title, URL, description, due date, category, creator
- Student_Assignments: Assignment ID, student ID, completion status, completion date
- Groups: Group management for bulk assignment features
- PDF document support
- Video content integration
- Interactive reading materials
- Multi-media assignments
- Time spent reading analytics
- Reading comprehension quizzes
- Progress reports and analytics
- Deadline reminders and notifications
- Discussion boards for assignments
- Peer review capabilities
- Group reading assignments
- Instructor feedback system
- LMS integration (Canvas, Blackboard, etc.)
- Calendar integration
- Email notifications
- Mobile app companion
- Bulk assignment creation
- Template management
- Advanced reporting and analytics
- Course management tools
Coming soon - detailed setup instructions will be provided once development begins.
This project is developed with GitHub Copilot assistance. Contributions are welcome following standard GitHub workflow practices.
License information to be determined.
- Backend: Go with Gin web framework
- Database: SQLite3 with GORM ORM
- Authentication: GitHub OAuth2 (using go-github and oauth2 packages)
- Frontend: HTML templates with Tailwind CSS (initially), later React/Vue integration
- Session Management: Gin sessions with Redis/memory store
Goal: Set up basic project structure and dependencies
Tasks:
- Initialize Go module and project structure
- Set up Gin web server with basic routing
- Configure SQLite3 database with GORM
- Create basic HTML templates and static file serving
- Set up environment configuration and logging
- Create basic health check endpoint
Deliverables:
- Working web server on localhost
- Database connection established
- Basic project structure with proper Go conventions
Files to Create:
├── main.go
├── go.mod
├── go.sum
├── config/
│ └── config.go
├── models/
│ └── models.go
├── handlers/
│ └── handlers.go
├── middleware/
│ └── auth.go
├── templates/
│ ├── base.html
│ └── index.html
├── static/
│ ├── css/
│ └── js/
└── database/
└── migrations.go
Goal: Implement GitHub OAuth2 authentication
Tasks:
- Set up GitHub OAuth2 application
- Implement OAuth2 flow with GitHub
- Create user registration and login handlers
- Implement session management
- Create user model and database schema
- Add role-based access control (student/instructor)
- Create protected routes middleware
Deliverables:
- Users can log in with GitHub
- Session persistence
- Role-based access control
- User dashboard skeleton
Database Schema:
CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
github_id INTEGER UNIQUE NOT NULL,
username TEXT NOT NULL,
email TEXT,
avatar_url TEXT,
role TEXT DEFAULT 'student',
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Goal: Core assignment creation and viewing functionality
Tasks:
- Create assignment model and database schema
- Implement assignment creation form for instructors
- Create assignment listing page
- Implement basic assignment viewing
- Add assignment validation and error handling
- Create instructor dashboard for assignment management
Deliverables:
- Instructors can create URL-based assignments
- Students can view assigned readings
- Basic assignment management interface
Database Schema:
CREATE TABLE assignments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
title TEXT NOT NULL,
description TEXT,
url TEXT NOT NULL,
due_date DATETIME,
category TEXT,
created_by INTEGER REFERENCES users(id),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE student_assignments (
id INTEGER PRIMARY KEY AUTOINCREMENT,
assignment_id INTEGER REFERENCES assignments(id),
student_id INTEGER REFERENCES users(id),
completed BOOLEAN DEFAULT FALSE,
completed_at DATETIME,
assigned_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(assignment_id, student_id)
);
Goal: Enable students to track and complete assignments
Tasks:
- Create student dashboard with assigned readings
- Implement assignment completion functionality
- Add progress tracking and statistics
- Create assignment detail pages
- Implement reading history view
- Add basic progress indicators
Deliverables:
- Students can mark assignments as complete
- Progress tracking and completion statistics
- Reading history functionality
- Responsive student dashboard
Goal: Advanced assignment management and distribution
Tasks:
- Implement group management system
- Add bulk assignment capabilities
- Create assignment distribution to specific students/groups
- Implement assignment categories and organization
- Add assignment search and filtering
- Create assignment editing and deletion
Deliverables:
- Group-based assignment distribution
- Advanced assignment management
- Search and filtering capabilities
- Assignment organization tools
Database Schema:
CREATE TABLE groups (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
description TEXT,
created_by INTEGER REFERENCES users(id),
created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE group_members (
id INTEGER PRIMARY KEY AUTOINCREMENT,
group_id INTEGER REFERENCES groups(id),
user_id INTEGER REFERENCES users(id),
joined_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(group_id, user_id)
);
Goal: Improve user interface and experience
Tasks:
- Implement responsive design with Tailwind CSS
- Add real-time updates using WebSockets or Server-Sent Events
- Improve form validation and user feedback
- Add loading states and error handling
- Implement dark/light mode toggle
- Add accessibility improvements
Deliverables:
- Modern, responsive UI
- Real-time progress updates
- Improved user experience
- Accessibility compliance
Goal: Add advanced tracking and reporting features
Tasks:
- Implement assignment analytics and reporting
- Add deadline reminders and notifications
- Create progress reports for instructors
- Implement assignment templates
- Add export functionality for reports
- Create advanced search and filtering
Deliverables:
- Comprehensive analytics dashboard
- Automated notifications
- Detailed progress reports
- Template management system
Goal: Create RESTful API for future integrations
Tasks:
- Design and implement RESTful API endpoints
- Add API authentication and rate limiting
- Create API documentation
- Implement API versioning
- Add comprehensive error handling
- Create API client examples
Deliverables:
- Full REST API
- API documentation
- Authentication system for API
- Client integration examples
Goal: Comprehensive testing and bug fixes
Tasks:
- Write unit tests for all handlers and models
- Implement integration tests
- Add end-to-end testing
- Performance testing and optimization
- Security audit and improvements
- Bug fixes and code refactoring
Deliverables:
- Comprehensive test suite
- Performance optimizations
- Security hardening
- Code quality improvements
Goal: Deploy to production environment
Tasks:
- Set up production environment configuration
- Implement database migrations
- Configure SSL/TLS and security headers
- Set up monitoring and logging
- Create backup and recovery procedures
- Write deployment documentation
Deliverables:
- Production-ready application
- Deployment documentation
- Monitoring and alerting
- Backup procedures
- Progressive Web App (PWA) implementation
- Mobile-specific UI improvements
- Offline functionality
- PDF document support
- Video content integration
- Interactive reading materials
- Discussion boards
- Peer review system
- Comment system on assignments
- LMS integration (Canvas, Blackboard)
- Calendar integration
- Email notifications
- Slack/Discord integration
# Initialize project
go mod init zipcodereader
# Key dependencies
go get github.com/gin-gonic/gin
go get gorm.io/gorm
go get gorm.io/driver/sqlite
go get github.com/google/go-github/v45/github
go get golang.org/x/oauth2
go get github.com/gin-contrib/sessions
go get github.com/gin-contrib/cors
# Run development server
go run main.go
# Build for production
go build -o zipcodereader main.go
# Run tests
go test ./...
zipcodereader/
├── main.go
├── go.mod
├── go.sum
├── config/
│ ├── config.go
│ └── database.go
├── models/
│ ├── user.go
│ ├── assignment.go
│ ├── group.go
│ └── progress.go
├── handlers/
│ ├── auth.go
│ ├── assignments.go
│ ├── dashboard.go
│ ├── api.go
│ └── admin.go
├── middleware/
│ ├── auth.go
│ ├── cors.go
│ └── logger.go
├── services/
│ ├── github.go
│ ├── assignment.go
│ └── notification.go
├── templates/
│ ├── base.html
│ ├── dashboard.html
│ ├── assignments.html
│ └── admin.html
├── static/
│ ├── css/
│ ├── js/
│ └── images/
├── tests/
│ ├── handlers_test.go
│ ├── models_test.go
│ └── integration_test.go
├── docs/
│ ├── api.md
│ └── deployment.md
└── scripts/
├── migrate.go
└── seed.go