No description
  • JavaScript 53.8%
  • Dart 45.6%
  • HTML 0.3%
  • Dockerfile 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
adminoo b80f084f74
All checks were successful
Build & Deploy / test (push) Successful in 2m7s
Build & Deploy / e2e (push) Successful in 5m21s
Build & Deploy / deploy (push) Successful in 3m11s
Merge pull request 'fix/refactor-test' (#8) from fix/refactor-test into main
Reviewed-on: #8
2026-08-15 20:41:23 +00:00
.forgejo/workflows ci: fix Forgejo runner compatibility 2026-08-15 23:19:12 +03:00
caddy feat: initial project setup 2026-08-15 15:48:13 +03:00
docker feat: Dart backend + localStorage fix + auth API 2026-08-15 21:35:10 +03:00
docs fix: local auth, lesson unlock flow, schema migration, analyze clean 2026-08-15 22:49:54 +03:00
e2e fix: remove node_modules symlink from tracking 2026-08-15 23:31:14 +03:00
lib refactor: fix magic numbers, remove dead use cases 2026-08-15 22:59:23 +03:00
scripts feat: security hardening — input validation, .env.example, deploy script, updated README 2026-08-15 16:27:32 +03:00
server feat: Dart backend + localStorage fix + auth API 2026-08-15 21:35:10 +03:00
test test: expand gamification tests (3 new) for lesson/unit unlock 2026-08-15 22:57:05 +03:00
web fix: add sqflite web worker binaries for IndexedDB backend 2026-08-15 18:41:25 +03:00
.env.example feat: security hardening — input validation, .env.example, deploy script, updated README 2026-08-15 16:27:32 +03:00
.gitignore fix: add package-lock.json for e2e npm ci, remove from gitignore 2026-08-15 23:31:06 +03:00
.metadata feat: configure web platform, build web release 2026-08-15 16:39:19 +03:00
analysis_options.yaml fix: local auth, lesson unlock flow, schema migration, analyze clean 2026-08-15 22:49:54 +03:00
pubspec.yaml chore: remove dead dependencies and unused api_client 2026-08-15 22:50:40 +03:00
README.md chore: remove .github, update README for Forgejo CI/CD 2026-08-15 18:08:09 +03:00

SysAnalytic

Duolingo for System Analysis & Design

Geymifitsirovannoye prilozheniye dlya izucheniya osnov sistemnogo analiza i sistemnogo dizayna.

Live

Service URL
App https://app.135.106.182.66.nip.io/
Forgejo https://forgejo.135.106.182.66.nip.io/

Features (MVP)

  • Auth: Email/password registration and login (demo mode available)
  • Skill Tree: Visual progression map with locked/unlocked units
  • 4 Lesson Types: Drag-n-Drop, Choice, Find Error, Write Query
  • Gamification: XP, crystals, lives, achievements
  • Dark/Light Theme: Business-style design system

Tech Stack

  • Flutter/Dart (Web, iOS, Android, macOS)
  • Riverpod (State management)
  • GoRouter (Navigation)
  • SQLite (Local storage)
  • Clean Architecture (Domain/Data/Presentation layers)

Getting Started

Prerequisites

  • Flutter SDK 3.22+
  • Dart SDK 3.12+

Setup

cp .env.example .env   # Fill in your values
flutter pub get
flutter run -d chrome

Run Tests

flutter test
flutter test --coverage

Build for Web

flutter build web --release

CI/CD

CI/CD runs on Forgejo Actions (self-hosted runner on the server).

Workflow (.forgejo/workflows/deploy.yml):

  1. Install Flutter SDK
  2. Clone repo from Forgejo
  3. flutter pub get + flutter test
  4. flutter build web --release
  5. rsync deploy to server

Trigger: push to main branch.

Secrets (stored in Forgejo repo settings):

  • SSH_PRIVATE_KEY — deploy key for server SSH access

Infrastructure:

  • Forgejo 16 (code hosting + Actions)
  • Forgejo Runner (Docker, --network host)
  • Caddy 2 (reverse proxy + Let's Encrypt SSL)
  • n8n (automation, optional)

Full deployment guide: docs/DEPLOY.md

Security

  • JWT tokens stored in flutter_secure_storage
  • SQL injection prevented via parameterized queries
  • All secrets in environment variables (never in code)
  • Security headers via Caddy (CSP, HSTS, X-Frame-Options)
  • See docs/technical/security-analysis.md for full analysis

Project Structure

See docs/technical/architecture.md

Documentation

License

Proprietary — All rights reserved.