Skip to content

About

a simple weekly schedule app (crossplatform) designed for kids

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

MySchedule — Εβδομαδιαίο Ωρολόγιο Πρόγραμμα

📋 Σύνοψη

MySchedule είναι μια Progressive Web App (PWA) για οργάνωση εβδομαδιαίου ωρολογίου προγράμματος. Λειτουργεί εξ ολοκλήρου τοπικά στον browser — χωρίς server, χωρίς internet (μετά την πρώτη φόρτωση), χωρίς εγκατάσταση λογισμικού.


📸 Στιγμιότυπα Εφαρμογής

Ακολουθούν ενδεικτικές οθόνες από την λειτουργία του MySchedule:

1. Εβδομαδιαίο Πρόγραμμα Εβδομαδιαίο Πρόγραμμα

2. Διαχείριση Χρηστών & Στατιστικά (Admin Panel) Διαχείριση Χρηστών

3. Βοήθεια & Υποστήριξη Βοήθεια και Υποστήριξη

4. Λειτουργία Εκτύπωσης (Print Preview) Προεπισκόπηση Εκτύπωσης


🚀 Οδηγίες Εκτέλεσης (Run)

Μέθοδος 1 — Python (προτεινόμενη, χωρίς εγκατάσταση)

# Python 3 (εγκατεστημένο σε Linux/Mac, διαθέσιμο στα Windows)
cd /path/to/myschedule
python3 -m http.server 8765

# Ανοίξτε browser: http://localhost:8765

Μέθοδος 2 — Node.js / npx

npx serve .
# ή
npx http-server . -p 8765

Μέθοδος 3 — VS Code Live Server

Εγκαταστήστε το extension "Live Server" και κάντε κλικ "Go Live".

Μέθοδος 4 — PHP (αν είναι εγκατεστημένο)

php -S localhost:8765

⚠️ ΣΗΜΑΝΤΙΚΟ: Δεν ανοίγετε το index.html απευθείας με file:// — χρησιμοποιείτε πάντα local server.
Αυτό είναι απαραίτητο για IndexedDB και Service Worker.


📱 Εγκατάσταση ως App (PWA)

Android / Chrome

  1. Ανοίξτε http://localhost:8765 στο Chrome
  2. Θα εμφανιστεί banner "Εγκατάσταση" — πατήστε Εγκατάσταση
  3. Ή: μενού Chrome (⋮) → "Προσθήκη στην αρχική οθόνη"

iOS / Safari

  1. Ανοίξτε http://<IP-server>:8765 στο Safari
  2. Πατήστε Κοινή χρήση (□↑) → "Προσθήκη στην αρχική οθόνη"

Desktop (Windows/Mac/Linux) — Chrome/Edge

  1. Ανοίξτε στο Chrome/Edge
  2. Εικονίδιο εγκατάστασης (💻) στη γραμμή διευθύνσεων → Εγκατάσταση

Μετά την εγκατάσταση η εφαρμογή λειτουργεί offline χωρίς browser.


🌍 Φιλοξενία & Διαμοιρασμός σε τρίτους (Deployment)

Επειδή η εφαρμογή είναι στατική (δεν απαιτεί backend server, τα δεδομένα σώζονται τοπικά), ο πιο εύκολος τρόπος για να την μοιραστείτε με άλλους χρήστες είναι το GitHub Pages.

Πώς να ενεργοποιήσετε το GitHub Pages:

  1. Ανεβάστε (push) τον κώδικα στο repository σας στο GitHub (π.χ. https://github.com/blancberger/myschedule).
  2. Στη σελίδα του repository στο GitHub, πηγαίνετε στην καρτέλα Settings (Ρυθμίσεις).
  3. Στο αριστερό μενού, κάντε κλικ στο Pages.
  4. Στην ενότητα Build and deployment, κάτω από το "Source", επιλέξτε το Deploy from a branch.
  5. Κάτω από το "Branch", επιλέξτε τον κλάδο main (ή master) και τον φάκελο /(root).
  6. Πατήστε Save.
  7. Σε 1-2 λεπτά, το GitHub θα δημοσιεύσει την εφαρμογή σας. Στην κορυφή της σελίδας "Pages" θα εμφανιστεί το link της μορφής: 👉 https://blancberger.github.io/myschedule/

Οι τελικοί χρήστες (π.χ. μαθητές, οικογένεια, φίλοι) απλά επισκέπτονται αυτό το link από το κινητό, το tablet ή τον υπολογιστή τους. Η εφαρμογή θα φορτώσει κανονικά και θα τους προτείνει να την Εγκαταστήσουν (PWA) στην αρχική τους οθόνη, χωρίς να χρειάζεται να εγκαταστήσουν Python ή οτιδήποτε άλλο!


🏗️ Δομή Project

myschedule/
├── index.html          # SPA entry point
├── manifest.json       # PWA manifest
├── sw.js               # Service Worker (offline cache)
├── css/
│   ├── main.css        # Design system (tokens, dark/light, reset)
│   ├── layout.css      # Sidebar, header, responsive layout
│   ├── components.css  # Calendar, cards, stats, admin
│   └── print.css       # Print-only styles
├── js/
│   ├── store.js        # IndexedDB abstraction layer
│   ├── theme.js        # Dark/light theme manager
│   ├── categories.js   # Category CRUD
│   ├── stats.js        # Statistics calculator
│   ├── activities.js   # Activity CRUD + inline edit + drag&drop
│   ├── calendar.js     # Weekly grid renderer
│   ├── admin.js        # Admin panel
│   ├── print.js        # Print handler
│   ├── auth.js         # Login / authentication
│   └── app.js          # Main entry point & router
└── icons/
    ├── icon-192.png    # PWA icon (small)
    └── icon-512.png    # PWA icon (large)

👥 Χρήστες & Πρόσβαση

Τύπος Είσοδος Δικαιώματα
Χρήστης Κλικ στο όνομα (login screen) Πρόγραμμά του μόνο
Admin Username + Password Όλα τα προγράμματα + διαχείριση

Default admin credentials: admin / admin1234
⚠️ Αλλάξτε τα αμέσως από Admin Panel → Αλλαγή Κωδικού!


🔐 Technical Admin Manual

Είσοδος Admin

  1. Login screen → κάρτα "Διαχειριστής" → εισάγετε admin / admin1234

Αλλαγή Κωδικού Admin

Admin Panel → "Αλλαγή Κωδικού Admin" → εισάγετε τρέχοντα + νέο κωδικό.
Ο κωδικός αποθηκεύεται ως SHA-256 hash (Web Crypto API) — ποτέ plain text.

Διαχείριση Χρηστών

Admin Panel → "Χρήστες":

  • ✏️ Επεξεργασία: Αλλαγή ονόματος, avatar, χρώματος, παρακινητικής φράσης
  • 🗑 Reset: Διαγραφή ΟΛΩΝ των δραστηριοτήτων χρήστη (επαναφορά default κατηγοριών)

Backup & Restore

Export: Admin Panel → "Λήψη Backup JSON" → κατεβαίνει αρχείο myschedule-backup-YYYY-MM-DD.json
Import: Admin Panel → "Επιλογή αρχείου JSON" → επιλέξτε backup αρχείο
⚠️ Το Import αντικαθιστά ΟΛΑ τα δεδομένα — κάντε export πρώτα!

Αποθήκευση Δεδομένων

  • Τα δεδομένα αποθηκεύονται στην IndexedDB του browser
  • Database name: MyScheduleDB, version: 1
  • Για να δείτε τα δεδομένα: Chrome DevTools → Application → IndexedDB → MyScheduleDB
  • Τα δεδομένα δεν διαγράφονται με refresh — μόνο με "Clear Site Data" ή Import

Service Worker & Cache

  • Cache name: myschedule-v1.0.0
  • Για να αναγκάσετε reload μετά από αλλαγές: Chrome DevTools → Application → Service Workers → Update
  • Ή: Αλλάξτε CACHE_NAME στο sw.js (π.χ. v1.0.1)

Debugging

Chrome DevTools (F12):
├── Console    → JS errors
├── Application
│   ├── IndexedDB  → Δεδομένα
│   ├── Service Workers → Cache status
│   └── Manifest → PWA info
└── Network    → File loading

Προσθήκη νέου χρήστη

Επί του παρόντος οι 3 χρήστες ορίζονται στο DB.seedIfEmpty() στο js/store.js.
Για προσθήκη νέου χρήστη (admin only):

  1. Ανοίξτε DevTools Console
  2. Εκτελέστε: await DB.users.add({ name: 'ΝέοςΧρήστης', avatar: '📚', color: '#00b894', role: 'user', quote: '' })

⚙️ Προσαρμογή

Αλλαγή default κατηγοριών

Επεξεργαστείτε το array defaultCategories στη συνάρτηση seedIfEmpty() στο js/store.js.
⚠️ Ισχύει μόνο για νέους χρήστες (πρώτη εκτέλεση ή μετά από "Clear Site Data").

Αλλαγή ωρών grid (08:00–22:00)

Στο js/calendar.js αλλάξτε τους βρόχους for (let h = 8; h < 22; h++).

Αλλαγή χρωμάτων/θέματος

Τα χρώματα ορίζονται ως CSS Custom Properties στο css/main.css (:root και [data-theme="light"]).


🌐 Deploy σε δίκτυο (LAN)

Για πρόσβαση από άλλες συσκευές στο ίδιο δίκτυο:

# Βρείτε την IP σας
ip addr show | grep 'inet '

# Εκτελέστε server σε όλες τις interfaces (0.0.0.0)
python3 -m http.server 8765 --bind 0.0.0.0

Άλλες συσκευές: ανοίξτε http://<IP-υπολογιστή>:8765

🔒 Για HTTPS (απαραίτητο για PWA install σε ορισμένες συσκευές): χρησιμοποιήστε ngrok ή Caddy με self-signed cert.


📊 Browser Συμβατότητα

Browser Desktop Mobile PWA Install
Chrome 90+ ✅ ✅ ✅
Edge 90+ ✅ ✅ ✅
Firefox 88+ ✅ ✅ ⚠️ Partial
Safari 15+ ✅ ✅ ✅ (iOS 16.4+)
Samsung Internet — ✅ ✅

📄 Άδεια

Διατίθεται υπό την άδεια MIT License με υποχρεωτική αναφορά στον δημιουργό — © 2026 blancberger

About

a simple weekly schedule app (crossplatform) designed for kids

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages