School Manager banner

School Manager

7 devlogs
50h 41m 31s

Updated Project: I started the react-native project at november 2025, but never actually coded anything (only the template app from expo). 99% of the app's code has been developed during and after February 2026.
School Manager is a cross-platform…

Updated Project: I started the react-native project at november 2025, but never actually coded anything (only the template app from expo). 99% of the app’s code has been developed during and after February 2026.
School Manager is a cross-platform app designed by a student to help you manage your school life better!
Its goal is to facilitate finding homework, lessons, and planning your study sessions, for both students and teachers.
School manager is an Expo 55 React Native app, built for mobile and web.
It’s also bundled with Tauri to make it desktop-compatible.

This project uses AI

Windsurf for code completion, perplexity/chatgpt for error debugging only. No code was fully written by AI.

Demo Repository

Loading README...

Enrico Leandro

Today was server day!
I spent HOURS reviewing the server code, to change how the app class logic works at it’s root.
Now, instead of checking if a user has the teacher flag, it instead looks only if the user is a teacher in the target class when updating.
The only place where a user actually has to be a teacher is when creating new classes.
Currently, all new users will temporarily be given the teacher flag (while in beta).
I also updated the other new components create/update/read/delete methods, so I can keep developing other new sections of the app.
Only client side update today were a few optimizations, such as the refresh control not reloading the entire view now, to improve app feel and “nativeness” i guess.
I also finally implemented the home screen view, that shows exams, lessons, homework for the next day, and upcoming exams for the following 3 days.
Strangely, I didn’t have any weird “computer wants to delete my work” kind of events today.
Well, we’ll meet with another devlog probably tomorrow!

Attachment
0
Enrico Leandro

Heya!
Today I coded a bit less, to work on the github page and project presentation.
I spent a lot of time on the readme file, to make the repo an open space, and to define a clear roadmap of the app, with all the major and minor milestones.
I also coded the calendar screen finally, I had to scream at useless documentations to understand how the react-native-calendars module worked. Oh well.
I also started working on the home screen but I’m too tired to actually finish it today.
Feel free to check out the github page of the project, maybe share some ideas!

Attachment
Attachment
0
Enrico Leandro

It was finally time for debugging and optimizations.
The app is still not complete, but if I keep leaving things unoptimized, who’s gonna fix the countless issues on shipping day?

I did a lot of work today. I fixed some refreshing issues I had with the app, where data would just vanish client-side, and refreshes didn’t work properly.

I’m also learning how to actually use react’s components properly! It’s a lot different from what I’m used to so I’m happy to finally understand it.

I updated the theme settings so it actually refreshes without app restart (which was incredibly difficult to do for some reason), optimized data calls with contexts, fixed most warnings (if not all!) that I got while using the app, a few quality of life features such as clicking an alert’s background to dismiss it, string length limits, a few style changes, placeholders, and I actually fixed the web app so I can finally deploy it for anyone to easily test!
I did have to clone the alerts object to actually make it work in logins tho, as those were modals.. whoops

I also had to rewrite most of the setup logic to actually make the keyboard avoiding views work properly.. react is painful
I’ll probably ship an alpha version of the app really soon, for anyone to test, and then reship with major updates.

Since today’s changes were mostly bug fixes, I don’t really have screenshots to post, except for the homework page which I didn’t upload yet. So I’ll do that today.

See y’all in the next devlog!

Attachment
0
Enrico Leandro

Sadly, today I wasn’t able to code much, yesterday i skipped the devlog since I didn’t manage to complete what I was doing.
Anyways, I coded lesson create and listing methods, same thing for homework.
Creating those was WAY harder than it should’ve been. I had to face differences between iOS and Android’s native pickers, and code differently for both.
I also had a weird issue, my computer just casually decided my project had to die, and started erasing files from it. Thankfully I reacted fast enough to unlink it from icloud, and copy the gitignored files to somewhere safe, fixed icloud sync and then downloading the files from the most recent github commit (which thankfully had everything)
I have a few bug fixes to do, and definitely some UI revisions, but with every day that passes my app gets closer for it’s first beta distribution.
Happy coding to everyone once again!

Attachment
Attachment
0
Enrico Leandro

Today was a very productive day, even if I mainly developed secondary features instead of primary ones.
I managed to add custom alerts, instead of using the native ones, as those weren’t compatible for all platforms, blocking me from using my app in desktop or restricted browser environments.
The buttons are customizable, and it supports custom components (example usage, the invite code for classes).
Also, about that, I also added subject creation support in the app, which was the next small step before reaching the actual important stuff: homework, grades, lessons, exams, and so on.
Nothing special, but still worthy of mentioning.
Lastly, one of the things that took me the longest…. TRANSLATIONS 🤮
I added italian support to the app thanks to i18n, but it was a huge pain to rewrite all of the components to use the module’s render function, and it was even worse to actually write the JSON files, it took me two hours!
(it also took me that long because I used the wrong format and had to write it all from scratch… but we don’t talk about that)
Regardless, now the supports other languages and translations!
I can’t wait to continue coding tomorrow. Cheers everyone!

Attachment
Attachment
Attachment
0
Enrico Leandro

Today I’ve coded a little bit more. I managed to do a huge part of the app, by adding class creation logic and invites (invites are small codes in this format: XXXX-XXXX-XXXX, that allow you to join a class, as a teacher or a student. They can only be created by teachers, and they’re the ones to configure whether the invite is going to let you join as a teacher or a student.)
To join as a teacher, your account account also needs to be flagged as a teacher account, so you can’t share a teacher invite code to a student, as it won’t work. Invites expire after a month.
I created 2 different user accounts to check if data sync worked fine, and to see if invites were also working, which they were!
I somehow predicted the invite acceptation logic by only needing an inviteData.save() function, so I saved myself some extra work.
I am probably halfway done with the app, I only need to add subject and other data creation logic, since data sync is already running.
I am also a bit worried about offline usage, but that’s a problem for another day.
Xarber out!

Attachment
1

Comments

Capy
Capy 8 days ago

Looking amazing! :)

Enrico Leandro

I created my app with react native, using the expo framework for easier shipping, thanks to EAS.
This was actually a project i had in mind a long while ago, but I never actually started developing it before a couple weeks ago.
This started because of a need of decent school exam management for us students in my classroom, so I developed a small PHP app, but I wanted to share this idea with the world, and so I made a full native app.
My goal is to ship an app that’s reliable even when you’re offline, and can help students manage their school life, possibly with on-device LLM tips and more.
The hardest thing until now was understanding the challenges behind react’s logic, with useEffect, useState, and all the hooks and component limitations.
Of course, integrating a database was also kind of difficult, but I managed to create all the data types and a function to sync the data.
The frontend part is still not complete, a few pages are missing, mainly the subpages such as settings, profile page, etc, but account data sync works.
I used a passwordless approach, sending an OTP code on login, and determining if a user is new to the app or not when creating a token, to make the login feel seamless.
I want the app to be fully usable even without an account, as users shouldn’t feel forced to create one, wherever that’s possible.
I still have a bit of work to do, but the app is coming out nice, and I hope I’ll be able to make students (and teachers)’s lives a little easier with my app.
It will be shipped to app stores, hoping apple decides to allow my app on their part.
With that said, happy coding to everyone!

Attachment
0