Unofficial app for the Argon school record.
Flutter client for eletronic school register (Classeviva) management using clean architecture.
- Simple and beautiful
- Useful charts and stats about grades, absences, etc...
- Dark & Light theme (dark is just better)
- Notifications when there is a new event (new grade, new event, etc..)
- Data persistency
- Multi language support (Italian & English) and localizaiton
Main technologies and libraries that I will use:
- 🔝 Flutter + Dart
- 📡 Retrofit + Dio for API requests
- 💡 BLoC for state management
- 📚 Moor for data persistency
Base url: https://www.portaleargo.it/famiglia/api/rest/
- x-key-app:
ax6542sdru3217t4eesd9
- x-version:
2.0.4
POST login
This endpoint logs in the user
- x-user-id: username
- x-pwd: password
- x-cod-min: schoolCode
Response
{
"token": "🤫"
}
GET oggi
This endpoint gives a briefing of a given date (if omitted, it automatically selects the current day)
- x-auth-token: token
{ "datGiorno": "2019-11-16" }
Response
An array of dati
where every dati
is either a homework
or a lesson
{
"dati": [
{
"dati": {
"datGiorno": "2017-10-14",
"desMateria": "MATEMATICA",
"numAnno": 2017,
"prgMateria": "prgMateria",
"prgClasse": "prgClasse",
"desCompiti": "Matematica: studiare le frazioni.",
"prgScuola": "prgScuola",
"docente": "(Prof. NOME DELL'INSEGNANTE)",
"codMin": "schoolCode"
},
"giorno": "2017-10-14",
"numAnno": 2017,
"prgAlunno": "prgAlunno",
"prgScheda": "prgScheda",
"prgScuola": "prgScuola",
"tipo": "COM",
"titolo": "Compiti assegnati",
"ordine": 40,
"codMin": "schoolCode"
},
{
"dati": {
"datGiorno": "2017-10-14",
"desMateria": "LINGUA E LETTERATURA ITALIANA",
"numAnno": 2017,
"prgMateria": "prgMateria",
"prgClasse": "prgClasse",
"prgScuola": "prgScuola",
"desArgomento": "Verifica d'Italiano.",
"docente": "(Prof. NOME DELL'INSEGNANTE)",
"codMin": "schoolCode"
},
"giorno": "2017-10-14",
"numAnno": 2017,
"prgAlunno": "prgAlunno",
"prgScheda": "prgScheda",
"prgScuola": "prgScuola",
"tipo": "ARG",
"titolo": "Argomenti lezione",
"ordine": 50,
"codMin": "schoolCode"
}
],
"abilitazioni": {
"ORARIO_SCOLASTICO": true,
"VALUTAZIONI_PERIODICHE": true,
"COMPITI_ASSEGNATI": true,
"TABELLONE_SCRUTINIO_FINALE": true,
"CURRICULUM_VISUALIZZA_FAMIGLIA": false,
"CONSIGLIO_DI_ISTITUTO": true,
"NOTE_DISCIPLINARI": false,
"ACCESSO_CON_CONTROLLO_SCHEDA": true,
"VOTI_GIUDIZI": false,
"VALUTAZIONI_GIORNALIERE": true,
"IGNORA_OPZIONE_VOTI_DOCENTI": false,
"ARGOMENTI_LEZIONE": true,
"CONSIGLIO_DI_CLASSE": false,
"VALUTAZIONI_SOSPESE_PERIODICHE": false,
"PIN_VOTI": false,
"PAGELLE_ONLINE": true,
"RECUPERO_DEBITO_INT": false,
"RECUPERO_DEBITO_SF": false,
"PROMEMORIA_CLASSE": true,
"VISUALIZZA_BACHECA_PUBBLICA": false,
"CURRICULUM_MODIFICA_FAMIGLIA": false,
"TABELLONE_PERIODI_INTERMEDI": false,
"TASSE_SCOLASTICHE": true,
"DOCENTI_CLASSE": false,
"VISUALIZZA_ASSENZE_REG_PROF": true,
"VISUALIZZA_CURRICULUM": false,
"ASSENZE_PER_DATA": true,
"RICHIESTA_CERTIFICATI": false,
"ACCESSO_SENZA_CONTROLLO": true,
"PRENOTAZIONE_ALUNNI": false,
"MODIFICA_RECAPITI": true,
"PAGELLINO_ONLINE": false,
"MEDIA_PESATA": false,
"GIUSTIFICAZIONI_ASSENZE": false
},
"nuoviElementi": 0
}
Lesson
datGiorno
The date of the given eventdesMateria
Description of the subjectdocente
AuthordesArgomento
Topic of the lesson
Assignment
datGiorno
The date of the given eventdesMateria
Description of the subjectdocente
AuthordesCompito
Assigment description
GET orario
This endpoint gives the student timetable
- x-auth-token: token
Response
An array of dati
where every dati
is an hour
{
"dati": [
{
"numOra": "1",
"giorno": "Luned\u00ec",
"prgClasse": "prgClasse",
"prgScuola": "prgScuola",
"lezioni": [
{
"materia": "DIRITTO ED ECON.",
"docente": "(Prof. NOME DELL'INSEGNANTE)"
}
],
"numGiorno": "1",
"codMin": "schoolCode"
}
]
}
numOra
The date of the given eventgiorno
Description of the subjectdocente
Authorlezioni
Array of lessons in the given hourmateria
Subject namedocente
Teacher name
numGiorno
day of the week
GET orario
This endpoint gives the student timetable
- x-auth-token: token
Response
An array of dati
where every dati
is an hour
{
"dati": [
{
"numOra": "1",
"giorno": "Luned\u00ec",
"prgClasse": "prgClasse",
"prgScuola": "prgScuola",
"lezioni": [
{
"materia": "DIRITTO ED ECON.",
"docente": "(Prof. NOME DELL'INSEGNANTE)"
}
],
"numGiorno": "1",
"codMin": "schoolCode"
}
]
}
numOra
The date of the given eventgiorno
Description of the subjectdocente
Authorlezioni
Array of lessons in the given hourmateria
Subject namedocente
Teacher name
numGiorno
day of the week
GET assenze
This endpoint gives the student absences
- x-auth-token: token
Response
An array of dati
where every element is an event
{
"dati": [
{
"codEvento": "A",
"numOra": "",
"datGiustificazione": "2017-03-27",
"prgScuola": "prgScuola",
"prgScheda": "prgScheda",
"binUid": "binUid",
"codMin": "schoolCode",
"datAssenza": "2017-03-25",
"numAnno": "2016",
"prgAlunno": "prgAlunno",
"flgDaGiustificare": "1",
"giustificataDa": "(Prof. NOME DELL'INSEGNANTE)",
"desAssenza": "",
"registrataDa": "(Prof. NOME DELL'INSEGNANTE)"
}
]
}
codEvento
Event codenumOra
Empty if it is an absence, useful if it is a delay on an early exitdatAssenza
Date of the eventflgDaGiustificare
1 if the event needs to be justifiedgiustificataDa
name of the professors who justified the eventregistrataDa
name of the professors who registered the event
binUid
?
GET notedisciplinari
This endpoint gives the student disciplinary notes
- x-auth-token: token
Response
An array of dati
where every element is an note
{
"dati": [
{
"prgAlunno": "prgAlunno",
"numAnno": "2016",
"flgVisualizzata": "S",
"prgAnagrafe": "prgAnagrafe",
"prgNota": "prgNota",
"prgScheda": "prgScheda",
"prgScuola": "prgScuola",
"desNota": "Lo studente non ha fatto i compiti.",
"datNota": "2018-10-14",
"docente": "(Prof. NOME DELL'INSEGNANTE)",
"codMin": "schoolCode"
}
]
}
flgVisualizzata
S if viewed N if notdesNota
Description of the notedatAssenza
Date of the eventdatNota
Date of the notedocente
Author of the note
GET votigiornalieri
This endpoint gives the student grades
- x-auth-token: token
Response
An array of dati
where every element is grade
{
"dati": [
{
"datGiorno": "2017-04-19",
"desMateria": "GEOGRAFIA",
"prgMateria": "prgMateria",
"prgScuola": "prgScuola",
"prgScheda": "prgScheda",
"codVotoPratico": "N",
"decValore": "7.5",
"codMin": "schoolCode",
"desProva": "",
"codVoto": "7\u00bd",
"numAnno": "2016",
"prgAlunno": "prgAlunno",
"desCommento": "",
"docente": "(Prof NOME DELL'INSEGNANTE)\n)"
}
]
}
datGiorno
Date of the eventdesMateria
Subject namecodVotoPratico
S (written test), N (oral interview) or P (practice test)decValore
Decimal value of the gradecodVoto
Display string of the codedesCommento
Description of the gradedocente
Author of the grade
GET votiscrutinio
This endpoint gives the scrutinio (end term school report) grades
- x-auth-token: token
Response
An array of dati
where every element is grade
{
"dati": [
{
"ordineMateria": "2",
"desMateria": "LINGUA E LET. ITA.",
"votoOrale": {
"codVoto": "7"
},
"prgMateria": "prgMateria",
"prgScuola": "prgScuola",
"prgScheda": "prgScheda",
"votoUnico": "1",
"prgPeriodo": "1",
"assenze": "1",
"codMin": "schoolCode",
"suddivisione": "SO",
"numAnno": "2016",
"prgAlunno": "prgAlunno",
"giudizioSintetico": "",
"prgClasse": "prgClasse"
}
]
}
desMateria
Subject namedecValore
Decimal value of the gradevotoAltro
orvotoPratico
orvotoScritto
orvotoOrale
codVoto
vote code
desCommento
Description of the gradegiudizioSintetico
Brief review of your school progress
GET compiti
This endpoint gives the student homeworks
- x-auth-token: token
Response
An array of dati
where every element is a homework assignment
{
"dati": [
{
"datGiorno": "2017-04-22",
"desMateria": "S.I. BIOLOGIA",
"numAnno": "2016",
"prgMateria": "prgMateria",
"prgClasse": "prgClasse",
"desCompiti": "Fare esercizio numero 31 a pagina 2.",
"prgScuola": "2",
"docente": "(Prof. NOME DELL'INSEGNANTE)",
"codMin": "schoolCode"
}
]
}
datGiorno
Date of the assignmentdesMateria
Subject namedesCompiti
Description of the assigmentdocente
Author of the assigment
GET lezioni
This endpoint gives the student lessons
- x-auth-token: token
Response
An array of dati
where every element is a lesson
{
"dati": [
{
"datGiorno": "2017-04-22",
"desMateria": "S.I. BIOLOGIA",
"numAnno": "2016",
"prgMateria": "prgMateria",
"prgClasse": "prgClasse",
"prgScuola": "prgScuola",
"desArgomento": "Abbiamo visto un video.",
"docente": "(Prof. NOME DELL'INSEGNANTE)",
"codMin": "schoolCode\n)"
}
]
}
datGiorno
Date of the assignmentdesMateria
Subject namedesArgomento
Lesson topicdocente
Author of the lesson
GET docenti
This endpoint gives the student teachers
- x-auth-token: token
Response
An array of dati
where every element is a teacher
{
"dati": [
{
"prgClasse": "1967",
"prgAnagrafe": "prgAnagrafe",
"prgScuola": "prgScuola",
"materie": "(S.I. BIOLOGIA)",
"docente": {
"email": "",
"nome": "NOME",
"cognome": "DELL'INSEGNANTE"
},
"codMin": "schoolCode"
}
]
}
materie
Subject(s?)docente
email
Email of the teachernome
Name of the teachercognome
Surname of the teacher
GET promemoria
This endpoint gives the student memos
- x-auth-token: token
Response
An array of dati
where every element is a memo
{
"dati": [
{
"desAnnotazioni": "IT Test",
"datGiorno": "2017-05-11",
"numAnno": "2016",
"prgProgressivo": "prgProgressivo",
"prgClasse": "prgClasse",
"prgAnagrafe": "prgAnagrafe",
"prgScuola": "prgScuola",
"desMittente": "NOME DELL'INSEGNANTE",
"codMin": "schoolCode\n)"
}
]
}
desAnnotazioni
Description of the memodatGiorno
Day when the event occoursdesMittente
Author of the memo
GET bacheca
This endpoint gives the student memos
- x-auth-token: token
Response
An array of dati
where every element is a memo
?
desAnnotazioni
Description of the memodatGiorno
Day when the event occoursdesMittente
Author of the memo