School Tools
- 17 Devlogs
- 58 Total hours
Notion sucks in so many ways for school automations and isn’t as feature rich as I need. I’m building an alternative to it so it, that i will actually use in my day-to-day life.
Notion sucks in so many ways for school automations and isn’t as feature rich as I need. I’m building an alternative to it so it, that i will actually use in my day-to-day life.
Heello! I fixed many bugs in the API and frontend, and also added the ability to reset passwords if you lost them! I also improved the login/signup pages.
Heeello!
I did a revamp on the admin users page. It is now WAY faster than the previous one, and searching works very well too!
And admins can now hit the ban hammer on users. That will send them an email, and block them from accessing School Tools.
Hi! I did a major revamp of the admin page and added statistics to it! You can now see user stats, adoption stats, and content stats (you must have admin, tho). Stats are automatically updated every hour, and can be manually updated by superadmins too.
Superadmins also got the ability to nuke the redis db completely in development.
Hello!
The frontend now uses bun instead of npm, so it’s very fast now! If you have a profile picture in gravatar, that will now be your profile picture.
Also, School Tools has a new logo!
Bug fixes:
I fixed some bugs around here and there and added basic support for the mobile UI.
Mobile UI support was largely done with OpenCode
I added a new toggle so users can disable ICS generation. The functionality is off by default, tho users can manually enable it in the settings. Existing users will still have it on.
QOL things:
Hi! hi!
The main point of this updated is that i added Homework support! 
You can see all your homework in a new shiny homework page. I also revamped the ‘Todays schedule’ in the main dashboard, and added a new homework widget there too
A few QOL things:
Added a new shinny settings page! You can edit your name, email and password
New feature:
• You can now change the icons of your subjects. If you already had subjects prior to this, its icon will be set as BookOpen.
Bug fixes:
• added very janky admin endpoints + ui. UI was mostly done by ai because its not public and just needs to work. I made the endpoints myself, even tho they are a bit janky. Will impove in the future..
• added a resend verification link button (only available after 6h) and logout button in the /auth/verify/pending page..
So, i had OpenCode do a look around the codebase for vulnerabilities and bugs that i should fix before release. However, the edits were done by me. This devlog is basically that:
• fixed an IDOR vulnerability that allowed any authenticated user to uncancel any class by just having its ID.
.
• when trying to log in with an account that does not exist, the api now raises a password incorrect error instead of user_not_found . .
• added rate limiting to /v1/auth/pwd (5 per minute) , /v1/auth/signup (20 per hour) and /v1/auth/verify (2 per minute).
• Improve email validation on account creation.
• Added password requirements on signup..
• Enforce email verified in endpoints.
• Fixed a vuln that allowed the ?next=//example.com param to redirect to any website after login.
• Added a FAQ in the calendar settings page ‘Why is my calendar not updating?’.
• Don’t allow class deletion if used by evaluation.
• Add loader and icon to the class deletion modal..
• Don’t allow subject deletion if used by class..
• Rename canceled to cancelled in many parts of the code..
• Ensure character count limit (8-50 in most places).
• Relax rate limits.
• [OpenCode] Created a migration worker.
• Migration to remove depreacted onboarding_status field..
• Made many things TZ aware and added an user timezone field in the IANA format..
• [OpenCode] Tried, and failed
to add mobile support..
• Standernize responses in the valid_json decorator.
Many of the changes are non-visual, so i put the devlog image as the new FAQ.
Hello!
I have added ICS integration support, so now you can add your School Tools calendar in any of your prefered calendars!
I started by making the job that generates the ICS per se. After that, i added API routes to integrate around it. I then integrated it into the frontend under /settings/calendar. There is also a tooltip in the normal calendar page!*
The way ICS feeds work is basically every time there is a DB edit (such as class creation for example) the user is marked as ‘dirty’. Then, the ICS job that runs every five minutes, gets every dirty user and updates their ICS feeds. It doesn’t really matter that it isn’t updated automatically, since the majority of calendar providers have a long TTL for ICS subscriptions. (Google Calendar has ~12h TTL for example!)
I also added a README.
*Frontend integration was heavily AI assisted, but i supervised it and edited some things to ensure code quality.
Hi! Recent updates:
You can now create and view classes! You can also cancel them individually if anything came up.
Okay, looong devlog.
I have made a very WIP frontend