Timetable
- 67 Devlogs
- 151 Total hours
A hyper-specialised timetable for my school, with full apple intelligence support, watch app, mac app, live activities, widgets, etc.
A hyper-specialised timetable for my school, with full apple intelligence support, watch app, mac app, live activities, widgets, etc.
As usual, I did a very assorted bunch of things:
I have expanded the home tab!!
Theres three tabs at the top, today, week, and upcoming.
week is what it already was
upcoming shows term dates, no school days, school events, and also the users own personal events they make.
the today view is a bit ugly but its sort of there!
there also an admin page now, so that i dont have to hardcode term dates etc, i can just send them as api requests (for admin accounts only lol)
Message extension got improved, it now checks if you have enabled sharing before allowing you to even sahre it, and tells
I’m adding countdowns everywhere, even when school is out, so that you can count the hours until your next period
This is currently the message extension ui. kinda ugly. that needs fixing
I also updated the created timetables detail view, and (ignore the screenshot) removes the save button cos no one is going to remember to press save when they change details, so this should save some frustration.
I improved the UI for this view, to better show classroom and teacher labels.
I also renamed “Authored” to “Created”, apparently its better copy, according to my friend.
The settings got cleaned up a bit, and importing from calendar again needs confirmation
I found an xcode bug, something to do with compilation errors for incorrect architecture, i dont get it but i gave apple feedback.
So I made a few more adjustments like removing the APNs registration page from onboarding to make onboarding even more seamless
Not important though. I discovered a really annoying problem: When I try to add iPad support, build fails because its trying to embed the watch app which obviously doesnt work on ipad. and xcode isnt letting me fix that. 😐
I made some UI rehauls again lol
I did a bunch of things:
I had a bug where the device could receive 2 notifications and live activities for each device, so I had to remake the APNs (apple push notification service) token management.
I also added a highlight around the current day, with the setting to disable it. i thought a stroke was better than a fill because its less overwhelming and doesn’t break the ui style.
😍
As you saw before the onboarding UI was a bit broken, so I went through and fixed it up and also trimmed down how many pgaes it has. Those bottom buttons aren’t concentric for some reason, even though I am using the built-in toolbar API, so I can’t fix it. Oh well.
And it’s done to 8 pages, from 13. I still have som non-UI bugs to fix.
Fixed some server bugs, a user reported getting “forbidden” status messages, turns out I forgot to migrate the database 😐
And other UI refinements:
Plus a version for debug builds, I think they came out really nice!!
I think this is pretty much it.
I think I’m getting there
I think I’ve locked in to this one. Now I need to figure out what to actually put on the papar, im thinking it has to be a kind of simplifed version of the existing main UI of my app. something kinda like a calendar schedule
So many variants!
and idk which one is best
Many many iterations later…
I’m leaning towards that paper one, it looks really tasteful i think. im not sure what to put on the paper though
I think they are coming along really nicely!!!!
The watchOS version has bigger title text and less handwriting rows cos its a smaller display size, i really like this 😃
the refraction effects 👌
I think it’s looking preetty good so far
More experiments, cos the previous multicolour outline was kinda ugly, now i’m thinking of adding the fake handwriting instead, it might look nice
I needed a new design system for my app, currently it was just a font and thats about it. Below are some experimental app icons I’ve been tweaking in sigma, they are made out of “paper” and represent a new theme I could use, which is literal paper as the design language. I think it could merge with Liquid Glass really nicely if done properly.
Otherwise, other improvements:
I have also decided to remove Apple wallet integration, it just kinda got too messy. so im now going to revert (yes, revert 😭) back to an iMessage extension that lets you share timetables with a link. it fixes some annoying things that wallet integration has, like syncing etc.
I can even allow custom link urls for a shared timetable!
I got carried away, since right now I am just going through and fixing the feedback my beta users gave me, starting with these:
The screenshots are some broken UI stuff I found, I can’t really show you server bugs other than these error alerts.
Going good so far though, can’t wait to release this as a v3!
After releasing v2 testflight, my friends pointed out a very large amounts of bugs in the app 😭 so I am now just trying to fix everything they pointed out. I’m pretty sure the server doesn’t have any issues, so at least that’s good.
First bug is this bottom bar looks horrendous, This was fine for me cos I set my dynamic text size to small 😭
I made some final refinements to make sure account management on macOS works, so that my users can actually use the app, and then some other UI refinements, mainly for settings.
there are a bunch of weird things i am yet to fix, but im really tired and just want to get this app out, so ill fix them later.
I added some more pages to the onboarding, since that’s the only way I can show users how the app works cos it ngl is kinda obscure. i also added a report feedback or bug button, which needs some ui adjustments bruh
I can’t really show you haptics but i added haptics to buttons and the status badges. not much to say honestly. theres a toggle in settings to turn that on and off.
I;m nearly read to release version 2 of the app, so i made a list of final tweaks and little improvements to make it as best I can, i think i can release it in a few days.
I improved the friends subjects widgets with concentric corners and stuff.
I think I have built out pretty much all of the projects, but i need to fix the abundance of bugs and problems that i have. the first one was fixing a problem with server syncing, and making watch depend on signing in on the phone, not by itself.
I refined the live activities (that background is for recess and lunch, even though this preview text says before school)
I added live activities, although they are currently kinda ugly and need much improvement. I also made the watch app independent, because it doesnt need the iphone much really, it can just contact the server. i still have more work in making the server work better and stop giving me random errors, but yeah.
In the onboarding I added pages to teach the user the features of the app, but I havent finished it yet. it needs a few more pages and refinement for smalelr phone screens
I have added an onboarding view that i really like, its very colourful and stuff. i also improved the server to be able to send notifications to users, to tell them when their next class is.
I added notifications to the app, so that people can receive information in the form of notifications as well as live activities and app intents and widgets. I also improved the share pass button in the prominent tab bar, so that you see this sheet to select what pass you want to share, not just the user’s own timetable.
Much better blur, although the server is taking a full 2.5 seconds to send back the pass, and i need to reduce that as much as possible
The timetable has some shadow behind it. I wanted to make the card HDR, but after a lot of experimenting i found apple doesn’t let you use hdr in your app like this, so i had to instead do this shadow 😐
I finished the search view, and i spent a very long time on perfecting some visual animations and stuff. when you click on a search result it separately animates the title in. also, before you search anything, i thought instead of showing most downloaded timetables or something i show this really squishy and fun pokemon-style timetable wallet pass. the settings view has also been improved a bit, to make some settings more clear, but i still need to refine it alot further to get it working really nicely.
I did some debugging and made quite a lot more endpoints, I think I’m ready to move on to making the app.
It took quite some time, but i got some really nice looking status badges! I’m really proud of how they came out, they look very juicy, and i cant show it here but i promise its very touchable and squishy and animated! 🥰
I’ve built a few endpoints and documented them in rapidapi, ready to import into the client app.
I finally got the server working! took a really long time to get https working though, nginx was impressively difficult
I have started building the server, using swift vapor. i chose vapor because it is written with swift, like my project, which made it easier to share code between the two files.
Xcode seems to have become extremely broken or something, i spent the last 4 hours trying to make my widget work but Xcode kept erroring out and eating memory swap, and now i have some trouble with making the imported timetables actually show up in the widgets i already made 😡
I changed the blur effect to this, which i think is much better, because it has less blur, and doesnt add an ugly grey tint, so black background stays black background.
I added this blur effect behind the share sheet, and I think it looks really nice. I had to import a package to get a blur this clear
I added a share button in the bottom left, which allows the user to share their timetable in one press, using the .prominent Tab style so that it looks seperate from the other tabs while still looking consistent.
So added the ability to share timetables using apple wallet, along with sending them using messages, i think that background will need to get fixed for readability, but otherwise, i like it alot.
I added some App Intents, below is my current subject intent, and also a list of received timetables intent. It took a lot longer than expected because the app intents framework was quite confusing to get working, but i got a nice UI in the end.
I upgraded the watch views, like making the progress rectangle rounded, and this very colourful background for when its recess and lunch
I updated the background of the window, including in light mode, and I also remade the icon. The settings also looks much better than it was before, and I made a nice window animation for when you click a slot to see what your friends have.
I made some refinements to the watchOS and iOS app, including design and performance.
I made some design adjustments to the macOS app, giving it a blur background. Also, the weekly shedule widget has had its corner radiuses and colours adjusted to be less harsh and look better.
I added some buttons and refined the UI of settings view
I continued to refine the design of the macOS widget, and I really like it now.
I fixed the widget extension problem by making two widget extensions, one for watch and one for other platforms, and made them use identical code. And then I refined the widget design for macOS and iOS and i think they look really nice now.
I added support for these widgets from only watch to iphone and ipad and macOS, and currently they are ugly and unrefined, so I’m going to fix them now.
I ported the app over to macOS, which was harder than I thought because there was a lot of code throughout every screen that was for connecting iphone to apple watch or some other iOS-only thing, which I had to conditionally compile out for macOS. then I needed to refine the views to work on macOS well, for example the class editor sheet used a sidebar instead of the scrolling tabview on iOS. There’s still more work to do to refine it more and get CloudKit working so that the timetable syncs across devices.
I added these views to the watch, so you can see how much time is left in a session for yourself, and also for others. i also refined the timetable view to not use so much glass because it was lagging the TabView. The main clock uses a liquid glass background against the background progressview, and what class is next.
I fixed the sync button visuals, it now has a blur replace transition effect. the timetable comparison view also blurs in and out when you click around
I moved the sync button to settings, so that the toolbar in the timetable tab could be removed. this is to make way for this new bottom half of the screen that shows other people’s timetables when you click on the slot in the top half, replacing the previous system of letting you select someone else and see their whole timetable covering your timetable. this system lets you view your own timetable and compare it with everyone else’s at a particular period. It uses a soft scroll edge effect at the bottom, and a hard effect at the top, which i think looks really nice. the second image shows the content scrolling under the timetable, which i really liked.
I’m just refining the software a but before I start adding Siri support and improving Messages import/export flow.
I fixed this comparison view, improved the class editor to show the glass nicer, and the settings toolbar has a gradient blur effect instead of hard blur, which was made the new default toolbar background style, which imo is ugly.
I renamed PMS Timetable to Timetable, which took more time than I expected cos it was embedded in like every single file and I even had to go through binary files and just delete all the instances of “pms” . then this managed to corrupt Xcode and make it crash every time I opened it, and i had to delete some stuff to fix that. Now I’m on the OS27 version and I’m going to start fixing some UI.