Task Management for ZipCode Students
A multi-tenant web-based task management system for Zip Code Wilmington coding bootcamp students and instructors, built with Go and SQLite3.
Note: While the repository is named TaskFolio, the application is branded as Tasking for end users.
New to this codebase? Start here:
| Document | Purpose | Audience |
|---|---|---|
| STUDENT_MANUAL.md | Complete user guide for students | Bootcamp students |
| ARCHITECTURE.md | Understand the system design and architecture | Developers, Architects |
| CODE_WALKTHROUGH.md | Step-by-step code explanation | Developers |
| LEARNING_GUIDE.md | Pedagogical guide with exercises | Students, Learners |
| DATABASE_SCHEMA.md | Database design and schema | Database developers |
| GETTING_STARTED.md | Developer onboarding | New contributors |
| DOCKER.md | Deployment with Docker | DevOps, System admins |
- Create, view, edit, and delete personal tasks
- Track task status (pending, in_progress, completed, blocked)
- View tasks assigned by instructors
- Organize tasks by type (labs, projects, reading, etc.)
- Group collaboration support
- Cohort-based organization
- All student capabilities
- Assign tasks to individual students, cohorts, or all students
- Manage student groups
- Track student progress
- Suspend/unsuspend accounts
- Task Templates Library: Create, import, export, and manage reusable task templates
- Quickly assign task templates to multiple students with custom due dates
- Language: Go 1.27
- Database: SQLite3
- Templates: Go
html/template(server-side rendering) - Session Management: Cookie-based authentication
- Deployment: Docker with Docker Compose
Why these technologies? See ARCHITECTURE.md for detailed rationale.
# 1. Clone the repository
git clone https://github.com/kristofer/TaskFolio.git
cd TaskFolio
# 2. Start with Docker Compose
docker compose up -d
# 3. Open browser
open http://localhost:8080See DOCKER.md for production deployment.
Prerequisites: Go 1.16+, SQLite3
# 1. Clone and enter directory
git clone https://github.com/kristofer/TaskFolio.git
cd TaskFolio
# 2. Install dependencies
go mod download
# 3. Run the application
go run main.go
# 4. Open browser
open http://localhost:8080The application comes pre-populated with demo accounts for testing:
| Role | Username | Password |
|---|---|---|
| Instructor | instructor1 |
password123 |
| Student | student1, student2, student3 |
password123 |
TaskFolio/
├── main.go # Application code (~3700 lines)
├── main_test.go # Tests (~1500 lines)
├── templates/ # HTML templates
│ ├── login.html
│ ├── dashboard.html
│ └── ...
├── taskfolio.db # SQLite database (created at runtime)
├── Dockerfile # Container definition
├── docker-compose.yml # Docker deployment
└── docs/ # Documentation
├── planning/ # Original planning documents
└── ...
Why single-file architecture? This is an intentional educational choice. See ARCHITECTURE.md for details.
TaskFolio is designed to be a learning tool. Start with:
- STUDENT_MANUAL.md - Complete user guide for using Tasking
- LEARNING_GUIDE.md - Structured learning path with exercises
- ARCHITECTURE.md - Understand how it's built
- CODE_WALKTHROUGH.md - Line-by-line code explanation
Contributing or modifying? Read:
- GETTING_STARTED.md - Development setup
- CODE_WALKTHROUGH.md - Understanding the codebase
- DATABASE_SCHEMA.md - Data model
Using this for teaching? Check out:
- LEARNING_GUIDE.md - Student exercises and projects
- ARCHITECTURE.md - Architectural concepts to teach
- Demo accounts - Pre-configured for classroom use
This application teaches:
- ✅ Web Development: HTTP request/response, server-side rendering, sessions
- ✅ Database: SQL, CRUD operations, migrations, relationships
- ✅ Security: Authentication, authorization, SQL injection prevention, XSS protection
- ✅ Go Programming: Standard library, testing, error handling
- ✅ Software Engineering: Testing, documentation, deployment
See LEARNING_GUIDE.md for detailed explanations.
See DATABASE_SCHEMA.md for complete schema documentation, including:
- Users table (authentication and roles)
- Tasks table (task management with status tracking)
- Groups table (team collaboration)
- Group members (many-to-many relationships)
- Task templates (reusable task library for instructors)
Task templates allow instructors to create a library of reusable tasks that can be quickly assigned to students.
- Navigate to "Task Templates" from the home page
- Click "Add Template" to create a new template
- Or click "Import CSV" to bulk import templates
CSV Import Format:
Title, Description, TaskType, ResourceURL
Lab 1, Complete Java basics, individual-programming-lab, https://github.com/...
Reading Chapter 5, Design patterns, reading, https://docs.google.com/...- Go to "Manage Students"
- Use the search/filter to find students
- Select students using checkboxes
- Click "Assign Template"
- Search for and select a template
- Set a due date (optional)
- Click "Assign to Students"
The template will create individual tasks for each selected student with the template's content.
- Edit: Update template details from the Task Templates page
- Delete: Remove templates that are no longer needed
- Export: Select templates and export to CSV for backup or sharing
Environment variables:
| Variable | Default | Description |
|---|---|---|
PORT |
8080 |
Server port |
DATABASE_PATH |
./taskfolio.db |
Path to SQLite database file |
# Run all tests
go test -v
# Run with coverage
go test -cover
# Run specific test
go test -run TestTaskCreation -v# Development
go run main.go
# Production build
go build -o tasking
./taskingSee GETTING_STARTED.md for detailed development setup.
| Limitation | Status | Production Fix |
|---|---|---|
| Plain text passwords | Use bcrypt hashing |
|
| No CSRF protection | Add CSRF tokens | |
| In-memory sessions | Use Redis/database sessions | |
| No rate limiting | Add rate limiting middleware |
What IS secure: ✅ SQL injection prevention via prepared statements, ✅ XSS prevention via template escaping
See ARCHITECTURE.md for detailed security discussion.
See DOCKER.md for production deployment including:
- Docker setup with persistent database
- HTTPS configuration
- Automated backups
- Resource limits
Run tests:
go test -v # All tests with output
go test -cover # With coverage reportSee TESTING.md for Docker-based testing procedures.
- STUDENT_MANUAL.md - Complete user guide for bootcamp students
- LEARNING_GUIDE.md - Pedagogical guide with exercises for students
- ARCHITECTURE.md - System architecture and design decisions
- CODE_WALKTHROUGH.md - Line-by-line code explanation
- GETTING_STARTED.md - Developer onboarding and setup
- DATABASE_SCHEMA.md - Complete database schema documentation
- TECHNICAL_REQUIREMENTS.md - System requirements
- DOCKER.md - Docker deployment guide
- TESTING.md - Testing procedures
- DEPLOY.md - Deployment instructions
- docs/planning/ - Original project planning documents
Contributions welcome! See GETTING_STARTED.md for development setup.
For questions or issues, please open an issue on GitHub.
MIT License
- Built for Zip Code Wilmington coding bootcamp
- Designed as an educational tool for learning web development
- Demonstrates real-world application architecture in a digestible format
Project Status: ✅ Functional application with comprehensive educational documentation
Next Steps for Learners: Start with LEARNING_GUIDE.md