Teacher · self-hoster · builder of learning systems

From one server at home to two learning products for the classroom.

Everything on this page runs on infrastructure I built and operate myself: a private cloud, a local AI stack, and the apps that grew out of them.

25+
self-hosted services
13,000+
curriculum pages structured
4
products shipped
v0.3.3
Rooznegar, in beta
01
Foundation
One server, Docker Compose, Caddy, private networking
02
Services
Files, media, mail, passwords, automation
03
Intelligence
Curriculum wiki, retrieval, multi-model review
04 · product
Rooznegar
04 · product
Masirak

01 · Foundations

It started with a single HTML file.

A home server, Docker Compose and Caddy in front. Then one useful service at a time, each one a small lesson in running things properly: backups, updates, access control, monitoring.

Files & sync
NextcloudSyncthingObsidian LiveSync

My own drive, and a notes vault synced across every device.

Media
JellyfinNavidromejfa-goWhisper subtitlesLibreTranslate

Film and music libraries, with an automatic subtitle and translation pipeline.

Identity & secrets
VaultwardenAdGuard Home

Passwords, private access and DNS under my control.

Mail & notifications
Mailcowntfy

My own mail server and push notifications.

Automation & AI
n8nOllama on GPUOmniRouteSearXNG

Workflows, local models and one gateway in front of many providers.

Observe & sketch
BeszelHomarrExcalidraw

Monitoring, a start page and a whiteboard, all self-hosted.

Learning
MoodleKiwix

An LMS to experiment with, and offline reference libraries.

Edge & routing
CaddyDocker ComposeCloudflare DNS

Automatic HTTPS, and one convention for every stack.

One stack file includes every app. One command, stack update, keeps all of it current. Each service is a small tool; together they became the platform the next layer is built on.

02 · Intelligence

A curriculum wiki and RAG system, built to serve a real classroom.

I turned the whole elementary curriculum into a structured, reviewed knowledge base, then put retrieval and local models on top. It began as a daily planner for my own class and became the seed of Rooznegar.

01
Sources

62 textbooks and 37 teacher guides across grades 1 to 6, 13,000+ pages.

02
Transcription

Scrambled text layers, so pages are rendered and read by vision models, in resumable batches.

03
Knowledge wiki

One linked note per lesson in an Obsidian vault, versioned in git.

04
Review

One model drafts, a different one fact-checks against the sources.

05
Retrieval

Local embeddings, ChromaDB and Odysseus, my own FastAPI assistant.

06
Products

Content packs and question banks that feed Rooznegar and Masirak.

Lessons learned the hard way

Agentic tool loops proved unreliable, so the pipeline is deterministic: one file in, one completion, one file out.

Many models, clear roles

Free tiers first, quotas respected, every model given the one job it is good at, and a reviewer that is never the author.

Privacy by design

Student names, attendance and scores never reach a model. The assistant sees lessons, not children.

03 · Flagship

Rooznegar logo

Rooznegar

A free digital daybook for elementary teachers: attendance, assessments, timetable, notes and official report cards, with each grade's book content as an optional paid layer.

● BETA · v0.3.3 LIVE rooznegar.app Try the web app @rooznegar.app Android · Windows · web. Persian interface.
Workspace

Classes, students, attendance, descriptive assessments, weekly timetable, notes, to-dos and reminders, with Jalali dates throughout.

Report cards

Per term and subject, built on the ministry's descriptive evaluation guide, with tap-to-insert level descriptions.

Book content

Reviewed content packs from the curriculum wiki, unlocked per grade, with question banks on the way.

Everywhere

One codebase wrapped for Android, Windows and the web. Built-in RSend moves files between phones and PCs, no internet needed.

How it's protected

Private by architecture, not by promise.

Security here is a design constraint from day one. Every layer below is named, and every one is live.

ON THE DEVICE
Everything about students

Names, attendance, scores and notes live in a local database. PIN and fingerprint lock the app.

NEVER CROSSES ↓ student data
ON MY SERVER
Account and entitlement only

Email, name, grades taught and subscription state. Nothing about a single student.

ONLY AFTER A CHECK → marked content pack
DELIVERED
Book content, gated and sealed

Locked content is never in the app package. It downloads after the server confirms access, marked for that account, then sealed on the device.

Passwordless sign-in● LIVE

Six-digit email codes that are single-use, hashed, expiring and rate-limited per address and per IP. Google tokens are verified by the server itself. No teacher ever sets a password.

Entitlement-gated delivery● LIVE

Paid packs are fetched on demand after the server confirms the subscription, with a per-account download limit. A lapsed plan locks content, never the teacher's own data.

Sealed on the device● LIVE

Books are stored AES-GCM encrypted, with the key wrapped by the Android Keystore. App data is excluded from cloud backup, and desktop builds use OS-protected storage.

Per-account watermarking● LIVE

Every pack carries an invisible mark unique to the account that downloaded it, plus a visible mark on desktop. A copied page can be traced back to its source.

Device hardening● LIVE

PIN and fingerprint with automatic re-lock, screenshots and screen capture blocked, no copy or print of books, obfuscated release builds and a hardened desktop shell.

Provable authorship● LIVE

After every release, hashes of the code and every content pack are timestamped on the Bitcoin chain with OpenTimestamps, so who wrote what, and when, can be proven.

Resilience● LIVE

A nightly GPG AES-256 encrypted off-site backup, checksum-verified, and an hourly-synced hot-standby replica of the backend that apps fall back to.

Hardened server● LIVE

Non-root, read-only containers with no extra capabilities, strict CSP and HSTS, an admin panel behind scrypt with lockouts, SSH keys only, and a security checkpoint after every phase.

04 · Companion

Masirak logo

Masirak

The student side. A study path for children to follow at home, with a little guide beside them and rewards that make learning worth choosing, without hooks that keep them hooked.

● BETA · v0.1.3 LIVE masirak.app Try the web app @masirak.app

Android · Windows · web. Persian interface.

A guide with a personality

Pooneh or Pouya walks the screen, shares a fact when touched, and leads a guided tour of the app.

Joy without hooks

Instant feedback, treasure chests and short games. No streaks, leaderboards or pushy notifications.

Works alone, grows with a class

Self-study from day one, then a free link to the teacher's Rooznegar class.

Built for children's privacy

Minimal child data, profiles stay on the device, and beta error reports are anonymous. Content inherits Rooznegar's protection.

05 · Also shipped

Small tools, built the same way.

Products that came out of the same stack and the same standards, each solving one problem well.

RSend● LIVE

Send files and text between phones and computers over the local network. No account, no internet, no ads.

It began as a feature inside Rooznegar and grew into its own app after people asked for it. A hotspot and QR code handshake, an interoperable protocol, and a sandboxed desktop core with its own test suite.

AndroidWindowsLinuxElectronCapacitor
Download RSend
Nobat○ OPEN SOURCE

A self-hosted appointment panel for a coordinator and a team of consultants, with a Jalali calendar and push notifications.

Role-based access so each consultant sees only their own schedule, no cloud AI and no third-party providers. The server is AGPL with a phase-by-phase spec and a tested codebase, and Nobat Mobile is a native Android client.

FastAPIKotlinJetpack ComposeAGPL
Nobat on GitHub Nobat Mobile

06 · What's next

Two roads, one destination.

Rooznegar serves the teacher, Masirak serves the child. They are built in parallel and meant to meet as one connected virtual institution.

RooznegarTEACHER
  1. Beta on Android, Windows and web SHIPPED
    Open sign-up, invite codes, in-app updates, hot standby.
  2. Report cards, RSend, sealed and watermarked books SHIPPED
    Content protection fully in place.
  3. Official release NEXT
    Question banks (grades 3 and 5 first), the quiz builder, online payment and Cafe Bazaar.
  4. Encrypted sync across devices PLANNED
    Your data on every device, readable only by you.
  5. Documentation site and question banks for every grade PLANNED
    A full guide for teachers, and banks that grow lesson by lesson.
MasirakSTUDENT
  1. First beta on Android, Windows and web SHIPPED
    Glass interface, guide characters, Google sign-in, guided tour.
  2. v1 · Self-study with real content NEXT
    Lessons, notes and quizzes from the same banks Rooznegar uses.
  3. v1.5 · Class link and play PLANNED
    Connect to a teacher's class, plus games, the guide's wardrobe, RSend and the year map.
  4. v2 · Video lessons PLANNED
    An explainer for every lesson, aimed at the hard parts.
  5. v2.5 · Personal study plan PLANNED
    An individual plan based on how each child studies best.
  6. v3 · Specialist guidance PLANNED
    Professional consulting built into the app.
One connected virtual institution.
Teachers plan and assess in Rooznegar, students learn in Masirak, and the same content and protection sit underneath both.

How I work

Verify with evidence.

Real commands and real output before any claim of "done".

Agents write, I review.

AI coding agents take tasks from a repo inbox. Nothing merges until a scripted check passes and I have read the diff.

Keep scope small.

Solve the problem in front of me, park the extras.

Privacy first.

Data stays with its owner unless there is a reason it can't.

Ship to a real room.

Everything is tested on a live class and its teachers.

Contact

Building something for learners? Let's talk.

admin@homelabgate.lol
© 2026 Pourya · homelabgate.lol Self-hosted, all of it.