Skip to content

About

📱 Aplicație Android Jetpack Compose pentru orar universitar dual (ACS + FSA) cu widget-uri de ecran principal 4x2 sincronizate în cloud. Realizat cu asistență AI.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

📱 OrarViewer — Android Native Dual-Faculty Timetable & Widgets

Platform Language UI AI Assisted

OrarViewer este o aplicație modernă de Android, construită nativ în Kotlin și Jetpack Compose (Material 3), dedicată studenților care urmează două facultăți concomitent (ex: Facultatea de Automatică și Calculatoare - ACS + Facultatea de Științe Aplicate - FSA).

Aplicația rezolvă problema suprapunerii orelor universitare, calculului parității săptămânilor (Par / Impar) și oferă widget-uri de ecran principal optimizate pentru clustere/stive Smart Widget 4x2.


✨ Funcționalități Principale

1. 📐 Design Eficient (80% Spațiu Dedicat Orelor)

  • Top Bar Compact (~15-20% din ecran): Selector de zi rapid (Luni – Vineri), indicator de săptămână și paritate (ex: Săpt. 2 • PAR), fără elemente voluminoase care să irosească ecranul.
  • Ecran Dedicat de Setări & Gestionare (BottomSheet): Căutare rapidă de săli/materii, filtrare pe facultate (ACS / FSA / Opționale), configurare semestru și sincronizare cloud.
  • 80-85% Canvas pentru Orar: Listă fluidă cu toate activitățile academice ale zilei.

2. 🟢 Reprezentare Inteligentă a Orelor Libere

  • Dimineți Libere (🌅 Dimineață Liberă): Dacă într-o zi nu ai cursuri de la 08:00, aplicația afișează automat un card distinct de dimineață liberă, fără să fie nevoie să verifici ceasul.
  • Ferestre între cursuri (🟢 Fereastră Liberă): Pauzele de 2 ore dintre laboratoare/cursuri sunt semnalizate vizual în fluxul orarului.

3. 🧩 Widget-uri de Ecran Principal (Format 4x2 pentru Stive/Cluster)

Ambele widget-uri sunt configurate nativ la dimensiunea 4x2 pentru compatibilitate completă cu funcția Smart Widget / Stack (Samsung One UI & Android Launcher):

  1. Widget Săptămânal (OrarWeekWidgetProvider):
    • Afișează orarul întregii săptămâni (Luni – Vineri) pe sloturi universitare standard.
    • Ferestrele libere sunt marcate pozițional cu —.
    • Logică automată de Duminică: Duminica comută automat pe săptămâna viitoare (crește numărul săptămânii și inversează paritatea) pentru a ști ce ai de pregătit pentru Luni.
  2. Widget Destinație / Următoarea Oră (OrarNextClassWidgetProvider & OrarAppWidgetProvider):
    • În timpul orelor curente, afișează materia și sala.
    • Comutare Proactivă cu 30 de minute înainte: În ultimele 30 de minute ale unui curs (sau în pauză), widget-ul comută automat pe următoarea destinație, evidențiind sala mare (📍 SALA PR 106), disciplina și un countdown până la începere.
    • Programator de Alarme de Precizie (WidgetAlarmScheduler): Widget-urile se actualizează exact la minutul tranzițiilor (la end - 30m, la începutul și finalul orelor) fără să depindă de trezirile lente ale sistemului.

4. ☁️ Sincronizare Cloud & Import Local

  • Sincronizare 1-click cu serverul PythonAnywhere (https://<user>.pythonanywhere.com/api/orar).
  • File Picker nativ pentru importul direct al fișierelor orar.json salvate local pe telefon.
  • Mod complet offline cu cache securizat în filesDir.

🤖 Mențiune privind Dezvoltarea cu Asistență AI (AI Disclosure)

Acest proiect a fost conceput, structurat și dezvoltat în regim de pair-programming asistat de Inteligență Artificială (Google DeepMind Antigravity / Gemini).

Rolul AI-ului în proiect:

  • Arhitecturarea componentelor reactive Jetpack Compose și a sistemului de rezolvare a conflictelor de orar.
  • Scrierea logicii complexe de calcul al parității semestriale și a providerilor RemoteViews pentru widget-urile Android.
  • Implementarea mecanismului de trezire punctuală prin AlarmManager pentru actualizarea widget-urilor cu 30 de minute în avans.
  • Rafinarea layout-urilor conform principiilor de UI/UX modern (Material 3 Dark Theme).

Rolul uman:

  • Definirea cerințelor specifice pentru studentul care urmează două facultăți în paralel.
  • Validarea fluxului pe dispozitive fizice (Samsung Galaxy / One UI) și feedback iterativ pe proporțiile ecranului și comportamentul widget-urilor.

🛠️ Tehnologii Utilizate

  • Limbaj: Kotlin 2.0+
  • Framework UI: Jetpack Compose, Material 3
  • Arhitectură: Clean Architecture (Data, Domain, UI Components)
  • Persistență & Modele: Gson, Android SharedPreferences, Local Storage Cache
  • Widget-uri: Android AppWidget Framework, RemoteViews, AlarmManager RTC_WAKEUP
  • Asincron: Kotlin Coroutines & Flow

🚀 Compilare și Instalare

  1. Clonează depozitul:
    git clone https://github.com/tgnfrzt/OrarViewer-Android.git
  2. Deschide proiectul în Android Studio (Hedgehog sau mai nou).
  3. Conectează un dispozitiv Android (sau emulator) și rulează:
    ./gradlew assembleDebug
  4. APK-ul generat se va afla la: app/build/outputs/apk/debug/app-debug.apk

📄 Licență

Acest proiect este licențiat sub licența MIT.

About

📱 Aplicație Android Jetpack Compose pentru orar universitar dual (ACS + FSA) cu widget-uri de ecran principal 4x2 sincronizate în cloud. Realizat cu asistență AI.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages