School Tools
- 8 Devlogs
- 34 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.
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