joeni

ideeën.md

1
Abstract
2
========
3
4
In dit document lijst ik alle ideeën op die in het systeem moeten zitten. Kleine
5
mankementen die voor problemen zorgen, oplossingen, algoritmen, ... Moest ik dit
6
mogen ontwerpen dan heb ik direct al een hoop dingen waaraan ik kan werken.
7
8
Core
9
====
10
11
Stack
12
-----
13
14
**De volledige stack van de UHasselt moet herschreven worden.** Dit is de stack
15
die zal gebruikt worden:
16
17
- OS: Debian 9. Stabiel, snel, lightweight, vrij
18
- Server: Nginx
19
- Web framework: Django
20
- Database: PostgreSQL
21
- VCS: Git
22
23
Vereisten
24
---------
25
26
Er zijn enkele vereisten die aan het systeem gesteld zullen worden:
27
28
- Ondersteuning meerdere talen (via Django)
29
- Alles geëncrypteerd; HTTPS verplicht (via Nginx en Let's Encrypt)
30
- Bescherming tegen LOGJAM, HEARTBLEED, ... (via Nginx, zie eigen setup)
31
- Alles werkt ook zonder JavaScript
32
- Uitgebreid testframework (via Django/Python3)
33
- Automatische updates (CRON-job Debian GNU/Linux, jaarlijkse heropstart indien
34
  nodig (ALARM: Postgres? Vereist manuele stuff)
35
- GEEN PLAIN TEXT PASSWORDS. 
36
37
Platform
38
========
39
40
Er zal één hoofdplatform zijn, dat de volgende diensten zal verenigen in 1
41
proper geheel (en dus overbodig zal maken):
42
43
- BlackBoard
44
- Studentendossier (ECHT ALLES)
45
- PingPing
46
- E-mail (server kan op achtergrond blijven bestaan voor SMTP enzo)
47
- Pagina's StuRa
48
- Examenrooster
49
- Uurrooster
50
- Studiegids
51
- Academische kalender
52
- Soft- en hardware-aankooppagina's (laptops, Office, ...)
53
- Inschrijfsysteem voor nieuwe studenten
54
- Hoofdpagina's (alles op main uhasselt.be dus)
55
- EveryonePrint
56
- Bibliotheeksysteem
57
- Campusshop MISSCHIEN
58
- m.uhasselt.be (is toch al half kapot)
59
- Google Forms
60
61
Dit platform zal echter zó goed zijn, dat men later naar believen zelf software
62
kan toevoegen die hieraan vastzit. Bijvoorbeeld later een app ontwikkelen die
63
inhaakt op dit alles?
64
Webinterface gaat wel de eerste zijn (en degene die ik ook zal maken). Is al een
65
degelijke basis.
66
67
Openstaande problemen
68
---------------------
69
70
- Aanvragen bij PingPing of er een API voorhanden is. Indien ja: Module
71
  schrijven voor interactie!
72
- EveryonePrint is niet nodig, alle printers zijn op netwerk aangesloten. Wel
73
  moet er overlegd worden hoe de interactie moet gebeuren; welke API is
74
  verantwoordelijk voor het doorsturen van bestanden?
75
- Uitvogelen HOE het menu op m.uhasselt.be gedaan wordt! 
76
77
Leuke ideeën
78
------------
79
80
- De TV's in de grote hal geven foto's weer. Waarom niet tegen betaling (via
81
  PingPing) toelaten dat studenten zelf voor een bepaalde duur (of beter:
82
  bepaald aantal weergaven van foto) een afbeelding kunnen insturen? Natuurlijk
83
  met bepaalde regels, wordt ook gelogged om misbruik te voorkomen
84
- PingPing moet DIRECT geïntegreerd zijn in de website. Als je bent ingelogd, is
85
  er bv. een werkbalk aan de onderkant, waarop staat hoeveel er nog op je
86
  PingPing staat. Kán geüpdatet worden via JavaScript maar da's een extra +
87
  oppassen voor overflow van PingPing-server.
88
- Als iemand een propriëtair bestandsformaat wil uploaden (zowel studenten als
89
  personeel), wordt er gewaarschuwd dat dit niet door iedereen bekeken kan
90
  worden. Systeem geeft dan voorstellen voor alternatieven (bv. .docx --> .pdf),
91
  en (indien mogelijk) een automatische conversie (via Pandoc).
92
- MarkDown support, zoveel mogelijk. 't Is *bae as fuck*, door iedereen
93
  begrijpbaar, simpel te implementeren, ...
94
- Veel studenten moeten statistische data inzamelen voor X of Y. Maak een
95
  systeem waarbij makkelijk enquêtes kunnen worden opgesteld. Data is al dan
96
  niet anoniem, opsteller kan een populatie aanduiden (bv. Faculteit
97
  wetenschappen, enkel docenten, ...), en dit verschijnt dan.
98
- Facebook-achtig sociaal platform voor de universiteit, waar studenten groepjes
99
  kunnen vormen om te chatten, bestanden uit te wisselen, (MarkDown support),
100
  ...
101
- Opvragen van uurrooster moet slim zijn: Systeem bekijkt waarvoor student is
102
  ingeschreven, verzamelt die vakken voor deze EN volgende week, en geeft dat
103
  weer.
104
    - Mogelijkheid om een persoonlijke iCAL af te halen. (maar ook voor
105
      modeltrajecten natuurlijk)
106
- Bij aanmaken wachtwoord; geef nuttige tips over wachtZINNEN, help de gebruiker
107
  (ALGORITME-IDEE: Doe voorstellen op basis van gekende info; als we het adres
108
  en geboorteplaats kennen: "Ik woon op #23 maar ben geboren in Hasselt." Dat
109
  zijn supersterke wachtzinnen en is ook nog eens chiq.)
110
    - Slechte wachtwoorden gewoon verbieden. *I'm fucking done with that shit.*
111
      En opnieuw: Moedig een wachtZIN aan met een paar voorbeelden!
112
- De interface volgt de huisstijl van de UHasselt, met die rechthoek enzo. Ook:
113
  SVG's voor logo's.
114
- Alle mensen met een account krijgen een persoonlijke homepage. Hierop is het
115
  volgende mogelijk:
116
    - Kleur aanpassen van huisstijl
117
    - Bannerpicture
118
    - Avatar
119
    - Kijken wat deze persoon allemaal heeft gedeeld
120
    - Weten of deze persoon beschikbaar is (bv "Bezet; <VAKNAAM> in <LOKAAL>")
121
    - De eigenaar kan ALLES privatiseren naar eigen wens
122
- Mogelijkheid om lokalen te reserveren:
123
    - Professoren en docenten moeten misschien voorrang krijgen maar het is fijn
124
      om soms een lokaal af te huren voor whatever
125
    - Plattegrond met suggesties
126
- Automatische generering examenroosters:
127
    - Controleer aantal studenten, vrije lokalen, zoek conflicten, ...
128
    - Genereer met een prachtig algoritme examenroosters die kunnen
129
    - Docenten geven ook vereisten in (bv. labo, specifieke lokalen, ...)
130
    - Oh ja, NIET IN PDF. Dit is tekst. MarkDown of gewoon .txt moet volstaan.
131
      iCALs kunnen ook geüpdatet worden
132
    - Extra opmerkingen moeten toegevoegd kunnen worden (in MarkDown of course)
133
- Mogelijkheid om afspraken te maken:
134
    - bv. ombudsdiensten moeten snel bereikbaar zijn.
135
136
137
**Een doorlopend idee is dat er een centrale module moet zijn die snel en slim
138
voorstellen kan doen op basis van ieders agenda.** Als ik een afspraak wil maken
139
met de studiebegeleiding, dan moet dat systeem bv. voorstellen: Het eerste
140
moment dat zowel ik als de studiebegeleider vrij hebben in de agenda. Dit kan
141
geabstraheerd worden voor alle studenten en personeel. Een waar centraal systeem
142
voor een zelfbeherede agenda.
143
144
Het is wel zo dat manuele overrides mogelijk moeten zijn; iedereen zou moeten
145
kunnen schuiven in de agenda, maar daar staan ook limieten op: Een professor kan
146
z'n les verplaatsen, een student niet.
147
148
Ook zou er bij heel veel dingen de mogelijkheid moeten zijn om commentaar toe te
149
voegen met MarkDown. Da's dus ook een centraal idee: MarkDown-commentaar waar
150
het nuttig kan zijn. Misschien dat zelfs in een aparte tabel steken?
151
(Databasenormalisatie) En misschien ook meerdere verzenders eraan vastmaken.
152