Giter Club home page Giter Club logo

studygroup's Introduction

Notekeeper (Android app)

(previously StudyGroup and StudyBuddy)

Ideja

Organizovati sve beleške, pitanja, itd. u centralizovani repozitorijum, po školama, i omogućiti što širi javni pristup. Ovo ima dve velike prednosti: korišćenje i unapređivanje starih beležaka koje su ostavile prethodne generacije i informisanje o programima druge škole. Iako koristim izraz "škola", trudio sam se da bude praktično i ako je u pitanju faks i sve slične institucije (kako osnovnoškolac može da vidi šta se tačno radi u željenoj srednjoj školi, tako i da srednjoškolci mogu da vide šta se radi na određenom fakultetu). Stoga i opštiji pojmovi u engleskom prevodu - Group & Course.

Kompatibilnost

Android 4.0-7.1 (testirano)

Struktura projekta (app folder)

Svako pakovanje ima svoj package-info.java, i to je vrhunac dokumentacije koje ćete naći ovde

  • UI layer

    • res/layouts - xml layouti, sve Što se iscrtava na ekranu
      • nije hijerarhijski, prva reč imena označava o kakvom layoutu se radi, activity_* i fragment_* su top-level, dok se ostali include-uju u te
    • java/....ui - Java kod koji binduje podatke za layoute i definiše sva ostala ponašanja
      • .dialogs - dijalozi
      • .recyclers - recikleri, tj. liste
      • .singleitemactivities - Add*Activity (za dodavanje/menjanje stvari), Pageri i single Note/Question Fragmenti
  • Model layer

    • java/....model - spona između dela koji se prikazuje korisniku i onoga što se odvija u pozadini. Ništa iz UI layera ne pristupa direktno I/O metodama, jer id-ovi iz klase modela nikada ne idu na "gore"
  • I/O layer

    • java/....io - lokalni ulaz i izlaz (baza, media fajlovi) i koordiniranje
      • .backgroundtasks - "ulaz" u I/O layer, određuje da li će se podaci uzimati iz baze na uređaju ili sa servera, skup povezanih klasa (*Tasks) koje dele Executor za izvršavanje svojih statičnih metode
      • .database - sve što se tiče baze podataka, skup povezanih klasa koje rade nad jednim SQLiteOpenHelperom (dele referencu na bazu u obliku singleton-a)
      • /Media*, Local* - fajlovi na uređaju, na internoj SD kartici, slike i audio zapisi
    • java/....network - komunikacija sa serverom i mrežom uopšte
      • /Network - pravi zahteve koji se šalju serveru, greške prosleđuje NetworkExceptionHandleru, radi token refreshing
      • /NetworkRequests - helper metode za Network
      • /* - metode koje se tiču konkretno neke stavke (npr. Courses su sve metode koje se tiču kurseva, i koji argumente koje prime pretvaraju u format koji Network klasa traži)
  • Misc

    • manifests/AndroidManifest.xml - manifest projekta, deklaracije aktivnosti i sl.
    • .exceptions - custom exceptioni i ExceptionHandler za mrežne greške u pozadinskim threadovima
    • .google - standard sliding tabs implementation
    • .misc - sve ostalo

Screenshots

Iz februara - http://imgur.com/a/DfmP7. Par stvari sam promenio od tad, ali i dalje je u principu to to

TODO

  • Loader invalid state bug - videti gde i zašto, možda race condition?
  • test inviteOnly groups and permission
  • sending and accepting invitations
  • proper offline mode, tj. dodavanje stvari čak i oflajn, koje bi se uploadovale nakon što se uređaj konektuje na internet
  • titles in Add*Activity - generic (Edit *) or dynamic (course/group/lesson name) ?
  • UI consistency - sidebar in MemberList & ScheduleActivity, like in GroupActivity (jer su courses, members i exams na istom hijerarhijskom nivou)
  • store announcements
  • ETag/Last-Modified caching for media
  • Per-Course simple message board (chatroom-like) ?
  • Veći ekrani?
  • testing/bugfixing
  • dokumentacija
  • //todo komentari u kodu (ovde ih zapravo ima, za razliku od servera)

studygroup's People

Contributors

luka-j avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.