Back to Projects
Learning with Otero Ediciones

Learning with Otero Ediciones

A lightweight school management platform built in pure Go, designed for managing users, classes, assignments, and submissions. The project focuses on simplicity, performance, and clean architecture without external frameworks.

Aug 2024 - Feb 2025 6 months

Tech Stack

GoHTMXAlpineJSTailwindCSSBash

Overview

This application provides:

Technology Stack

Backend:

Frontend:

Architecture

Database Layer

The database uses bbolt with structured buckets:

Data is stored using composite keys where necessary. For example:

Submissions use a composite key:

assignmentId:username

This ensures uniqueness per assignment and user while allowing efficient prefix scans.

Generic helpers are implemented for:

All database models are located under:

/database/models

DTO Layer

DTOs are separated from database models to prevent coupling between storage and presentation.

Located under:

/dto

Conversion functions are used to map models to DTOs explicitly. This allows future divergence between database structures and UI representations.

Routing

Routing is handled manually using net/http and a centralized router function. Boolean switch statements are used for flexible route matching.

Examples of supported routes:

Authentication is enforced via HTTP cookies. All routes except /login require a valid session cookie.

Authentication

Authentication flow:

  1. User submits login form (HTMX POST).

  2. Password is verified using a hashed comparison.

  3. On success:

  1. On failure:

Passwords are:

Assignment and Submission Logic

Assignments:

Submissions:

Designed to scale comfortably for:

Development

To run in development mode:

goplate watch

This will:

Server runs at:

http://localhost:3000

If styles appear broken after changes, perform a hard refresh due to browser caching.

Production Considerations

Project Goals

This project prioritizes:

It is designed as a learning-focused but production-capable foundation for a school management system.

License

Apache 2.0

View All Projects