Open comments for this post
I added a phone responsive design, configured and deployed the app on my home RaspberryPi server with CICD working pipeline and all encryption. It was my first time configuring CICD. Wakatime didn’t track my time spent on github and ssh connection on my server ;(.
I believe, this is a final step to this project. I learned many things. CI/DC, caching, improved at system design, docker, react, python, learned how useful Jupiter Notebook can be, using cloudflare on higher level. Projects like this are actually helping me become better software engenier.
Open comments for this post
HELLO.
Today I woke up half sick so my parents did not force me to help around the household. Soo I decided that it is time to bring this project one step closer to the end.
What changed?
Many things changed. There were many thing added in the latest update but 50% of them were not working. AI is good coding assistant but it can’t do magic and you need to write the important stuff yourself or it won’t work. I will start with the homework: When opening homework, you could see only like last 12-16 homework due to the method how it was requested. That changed and now you can see all of the homework since the start of the school year.
- Added actual “let ai make my homework” functionality. Now, it sends the whole homework with its attachments to gemini with your user specific prompt and shows what gemini returns. It needs some work on it to work 100% but the functionality is there.
Next tab: Timetable. Claude gave a pretty good draft for the timetable but 50% of it was missing so I had to manually test the edupage api in my PoC scripts to see the exact output. It took pretty long to get familiar with the api but I managed to make it work. Then I implemented that solution to my app backend. I found a featrue that returns all the missing teachers and substitution for the whole school so I combined this with the schedule - it shows you canceled classes etc…
The grades tab hasn’t changed that much beacause it was already working pretty good.
Canteen tab: Canteen tab received a big upgrade. I have not talked about it in my devlogs that much but it has really improved.
- You can see all lunches and menus that that are available in your school canteen. - This was an issue since it worked only half of the time. The debugging process was the same - PoC scripts to test the edupage api and then implementing the solution to the actual app.
You can sign in and sign out of lunches and I added auto order feature because sometimes I was forgetting to sign up for lunch. The signing up prior had also not been working for a while and I managed to fix it with the same looong steps of making a poc, talking to api and implementing working solution.
Big feature was english/slovak page translation, since I am from Slovakia I made Slovak translation my priority. I learned how to make multilingual pages thanks to this project.
But the main features are the ones that people don’t see. I added a caching system, TTL system for data and pre-loading system - When user logs in, app sends all the reqests - grades, canteen, timetable, homework - so when user goes to some tab, the data is already half there and when he switches tabs again, the data doesn’t dissapear. This is a huge UX improvement. It was implemented before but only to grades page and there was no TTL for it so it could get old and misleading. For the sake of UX reload buttons were added so user can manually reload data.
Next steps:
Hardening, Polishing, Adding better AI support and finally publishing and shipping my project. I feel like I am close to making this really work.
Thank you for reading.
Open comments for this post
Today I was presenting this project at school so I make a presentation branch where I removed all 50% working pages - I was left with the grade calculator. I think it is a great tool because trying to calculate your grades on some more complicated subject can be pain. This grade calculator changes the expirience. Also The whole project had a redesign into this darker more cool theme than the AI slop one. I really like how the page is looking right now.
Added:
Grade calculator tab
Timetable tab - still working on, my api has some request issues for some days. It is weird and I am trying to fix it. Canteen - the school canteen menu and function to sign up week prior - still working on.
And dashboard is getting a full redesign.
Open comments for this post
Soooo. Just finished the tabs. 1. Home - where some basic overview will be. Now, it is only filled with mock data but I am connecting it with backend in the next step. 2. Homework - tab, where students can track their homework - possible, make AI do it for them. The data is connected to backend and is currently working. I am going to implement some best practices such as pre-loading the data once the student logs in so the transition is seamless. 3. page - Canteen - page where students will have better information about their food, food pricing, how does the food look like and such. Edupage has no feature to sign automaticly like 4 weeks prior and sometimes I forgot to sign up for lunch and I am hungry so it is a nice feature to have. ;)
Open comments for this post
AstroPage - portal for students using EduPage that will make their student lives easier.
This is just vibecoded ui in react. More complex design will be done when the whole project will be working as expected. Now, I am focusing on the backend, security, user privacy and overall system design. I have come to a milestone where the login page works as expected, students can login via their edupage credentials - the passwords are not stored anywhere, the server calls edupage api and tries to log in with it, when sucesfull, only the session is handed to the app so users have maximum privacy.
I built the project on my foundations: Fast API skeleton repo, where I have all the setup for my fast api aplications so I am not always building from zero.
I am really exited about this project. It will be a life changer for people using edupage.
If you have any feature ideas, you can share them with me.