Skip to content

digitaldrywood/rollcall

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RollCall

A modern, privacy-first attendance tracking system for high school clubs and organizations.

Overview

RollCall provides a simple QR code-based check-in system that helps club organizers track member attendance while engaging students through gamification. Built with a focus on student privacy and FERPA compliance.

Key Features

Core Functionality

  • QR Code Check-in: 2-minute expiring codes with auto-refresh
  • Multi-tenant Architecture: Support multiple schools/organizations
  • Custom URLs: Friendly slugs like /org/lincoln-high/club/robotics
  • Meeting Scheduling: Plan meetings with required/optional designation
  • Role Management: Organizer, Assistant, Viewer, and Member roles

Gamification

  • Achievement Badges: Reward consistent attendance and engagement
    • Perfect Attendance (required meetings only)
    • Early Bird (first 5 minutes)
    • Club Regular (90% attendance)
    • Streak Master
    • Bonus Enthusiast (optional meetings)
  • Points System: Track engagement across clubs
  • Leaderboards: Optional competitive elements

Privacy & Security

  • FERPA Compliant: Designed for educational records protection
  • Minimal Data Collection: Only essential information
  • Secure Authentication: Via Clerk with multiple login options
  • In-Person Only: QR codes prevent remote check-ins
  • Content Moderation: Automated filtering for profiles

Tech Stack

  • Backend: Go 1.23+ with Echo framework
  • Database: SQLite with sqlc for type-safe queries
  • Frontend: HTMX + Templ + Tailwind CSS
  • Authentication: Clerk (10K free MAUs)
  • Development: Air for hot reload

Quick Start

Prerequisites

# Install Go 1.23+
# Install Node.js 18+ (for Tailwind)

# Install development tools
go install github.com/air-verse/air@latest
go install github.com/sqlc-dev/sqlc/cmd/sqlc@latest
go install github.com/pressly/goose/v3/cmd/goose@latest
go install github.com/a-h/templ/cmd/templ@latest

Environment Setup

# Copy example environment file
cp .envrc.example .envrc

# Edit .envrc with your configuration
# Required: Clerk API keys
# Required: Database path
# Optional: OAuth credentials

# Load environment variables
source .envrc

Database Setup

# Run migrations
make migrate

# Seed development data (optional)
make seed

Development

# Install dependencies
make deps

# Start development server with hot reload
make run

# Visit http://localhost:8080

Building

# Build production binary
make build

# Run tests
make test

# Lint code
make lint

Project Structure

rollcall/
├── cmd/            # Application entry points
├── service/        # HTTP handlers and business logic
├── storage/        # Database layer
├── views/          # Templ templates
├── public/         # Static assets
├── internal/       # Internal packages
└── scripts/        # Utility scripts

Usage Guide

For Super Administrators

  1. Configure organization domains
  2. Set up organization profile and logo
  3. Monitor system usage
  4. Manage tenant settings

For Club Organizers

  1. Create your club with custom slug
  2. Schedule meetings (mark as required/optional)
  3. Display QR code for check-in
  4. View attendance reports
  5. Manage assistants and viewers

For Students

  1. Sign up with school email
  2. Join clubs
  3. Scan QR code to check in
  4. View your badges and achievements
  5. Track attendance history

API Documentation

Coming soon. The application primarily uses server-side rendering with HTMX for interactivity.

Deployment

Production Requirements

  • Go 1.23+
  • SQLite with WAL mode enabled
  • Reverse proxy (Nginx/Caddy)
  • SSL certificate
  • Clerk account

Docker

# Dockerfile coming soon

SystemD Service

# /etc/systemd/system/rollcall.service
[Unit]
Description=RollCall Attendance System
After=network.target

[Service]
Type=simple
User=rollcall
WorkingDirectory=/opt/rollcall
ExecStart=/opt/rollcall/bin/rollcall
Restart=on-failure
Environment="PORT=8080"
Environment="DATABASE_PATH=/var/lib/rollcall/data.db"

[Install]
WantedBy=multi-user.target

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Development Workflow

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and linting
  5. Submit a pull request

Security

  • Report security vulnerabilities privately
  • No storage of sensitive student data
  • Regular security updates
  • FERPA compliance maintained

License

MIT License

Support

Roadmap

Phase 1 (MVP) - Current

  • ✅ Multi-tenant architecture
  • ✅ Basic attendance tracking
  • ✅ QR code check-in
  • ✅ User profiles
  • ✅ Meeting scheduling
  • 🚧 Basic reporting
  • 🚧 Initial badges

Phase 2

  • Advanced analytics
  • Email notifications
  • Parent portal
  • Enhanced gamification

Phase 3

  • API for integrations
  • Mobile apps
  • Advanced reporting
  • School system integration

Acknowledgments

Built with modern web development best practices and a focus on student privacy.

About

Planning Center attendance sync tool for Parable

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors