MySchedule είναι μια Progressive Web App (PWA) για οργάνωση εβδομαδιαίου ωρολογίου προγράμματος. Λειτουργεί εξ ολοκλήρου τοπικά στον browser — χωρίς server, χωρίς internet (μετά την πρώτη φόρτωση), χωρίς εγκατάσταση λογισμικού.
Ακολουθούν ενδεικτικές οθόνες από την λειτουργία του MySchedule:
2. Διαχείριση Χρηστών & Στατιστικά (Admin Panel)

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

# Python 3 (εγκατεστημένο σε Linux/Mac, διαθέσιμο στα Windows)
cd /path/to/myschedule
python3 -m http.server 8765
# Ανοίξτε browser: http://localhost:8765npx serve .
# ή
npx http-server . -p 8765Εγκαταστήστε το extension "Live Server" και κάντε κλικ "Go Live".
php -S localhost:8765
⚠️ ΣΗΜΑΝΤΙΚΟ: Δεν ανοίγετε τοindex.htmlαπευθείας μεfile://— χρησιμοποιείτε πάντα local server.
Αυτό είναι απαραίτητο για IndexedDB και Service Worker.
- Ανοίξτε
http://localhost:8765στο Chrome - Θα εμφανιστεί banner "Εγκατάσταση" — πατήστε Εγκατάσταση
- Ή: μενού Chrome (⋮) → "Προσθήκη στην αρχική οθόνη"
- Ανοίξτε
http://<IP-server>:8765στο Safari - Πατήστε Κοινή χρήση (□↑) → "Προσθήκη στην αρχική οθόνη"
- Ανοίξτε στο Chrome/Edge
- Εικονίδιο εγκατάστασης (💻) στη γραμμή διευθύνσεων → Εγκατάσταση
Μετά την εγκατάσταση η εφαρμογή λειτουργεί offline χωρίς browser.
Επειδή η εφαρμογή είναι στατική (δεν απαιτεί backend server, τα δεδομένα σώζονται τοπικά), ο πιο εύκολος τρόπος για να την μοιραστείτε με άλλους χρήστες είναι το GitHub Pages.
- Ανεβάστε (push) τον κώδικα στο repository σας στο GitHub (π.χ.
https://github.com/blancberger/myschedule). - Στη σελίδα του repository στο GitHub, πηγαίνετε στην καρτέλα Settings (Ρυθμίσεις).
- Στο αριστερό μενού, κάντε κλικ στο Pages.
- Στην ενότητα Build and deployment, κάτω από το "Source", επιλέξτε το Deploy from a branch.
- Κάτω από το "Branch", επιλέξτε τον κλάδο
main(ήmaster) και τον φάκελο/(root). - Πατήστε Save.
- Σε 1-2 λεπτά, το GitHub θα δημοσιεύσει την εφαρμογή σας. Στην κορυφή της σελίδας "Pages" θα εμφανιστεί το link της μορφής:
👉
https://blancberger.github.io/myschedule/
Οι τελικοί χρήστες (π.χ. μαθητές, οικογένεια, φίλοι) απλά επισκέπτονται αυτό το link από το κινητό, το tablet ή τον υπολογιστή τους. Η εφαρμογή θα φορτώσει κανονικά και θα τους προτείνει να την Εγκαταστήσουν (PWA) στην αρχική τους οθόνη, χωρίς να χρειάζεται να εγκαταστήσουν Python ή οτιδήποτε άλλο!
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
- Login screen → κάρτα "Διαχειριστής" → εισάγετε
admin/admin1234
Admin Panel → "Αλλαγή Κωδικού Admin" → εισάγετε τρέχοντα + νέο κωδικό.
Ο κωδικός αποθηκεύεται ως SHA-256 hash (Web Crypto API) — ποτέ plain text.
Admin Panel → "Χρήστες":
- ✏️ Επεξεργασία: Αλλαγή ονόματος, avatar, χρώματος, παρακινητικής φράσης
- 🗑 Reset: Διαγραφή ΟΛΩΝ των δραστηριοτήτων χρήστη (επαναφορά default κατηγοριών)
Export: Admin Panel → "Λήψη Backup JSON" → κατεβαίνει αρχείο myschedule-backup-YYYY-MM-DD.json
Import: Admin Panel → "Επιλογή αρχείου JSON" → επιλέξτε backup αρχείο
- Τα δεδομένα αποθηκεύονται στην IndexedDB του browser
- Database name:
MyScheduleDB, version:1 - Για να δείτε τα δεδομένα: Chrome DevTools → Application → IndexedDB → MyScheduleDB
- Τα δεδομένα δεν διαγράφονται με refresh — μόνο με "Clear Site Data" ή Import
- Cache name:
myschedule-v1.0.0 - Για να αναγκάσετε reload μετά από αλλαγές: Chrome DevTools → Application → Service Workers → Update
- Ή: Αλλάξτε
CACHE_NAMEστοsw.js(π.χ.v1.0.1)
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):
- Ανοίξτε DevTools Console
- Εκτελέστε:
await DB.users.add({ name: 'ΝέοςΧρήστης', avatar: '📚', color: '#00b894', role: 'user', quote: '' })
Επεξεργαστείτε το array defaultCategories στη συνάρτηση seedIfEmpty() στο js/store.js.
Στο js/calendar.js αλλάξτε τους βρόχους for (let h = 8; h < 22; h++).
Τα χρώματα ορίζονται ως CSS Custom Properties στο css/main.css (:root και [data-theme="light"]).
Για πρόσβαση από άλλες συσκευές στο ίδιο δίκτυο:
# Βρείτε την 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 | Desktop | Mobile | PWA Install |
|---|---|---|---|
| Chrome 90+ | ✅ | ✅ | ✅ |
| Edge 90+ | ✅ | ✅ | ✅ |
| Firefox 88+ | ✅ | ✅ | |
| Safari 15+ | ✅ | ✅ | ✅ (iOS 16.4+) |
| Samsung Internet | — | ✅ | ✅ |
Διατίθεται υπό την άδεια MIT License με υποχρεωτική αναφορά στον δημιουργό — © 2026 blancberger

