This project has been deleted.
A real-life version of a game inventory so that you can remember where you put that thing. Built with Swift and SwiftUI. Keep track of your stuff, where it is, what it is, how many you have, and an image to help you easily identify what it is amongst your inventory, and maybe also give you a peek of where it is. Sort your home screen, hide recently added, categories, or locations, or hide a specific category or location, sort them to your hearts content, and make the most important things at fingers reach. Search through your inventory to help you find that thing even quicker.
BnaJns
Check their projects out: SoM Commits Extension, visittallinn-waffles, ralseibot, roblox-outfit-finder
Captain A.J.
Check their project out: Bird Islands-HackClub Demo
Emma
Check their project out: Blueprint Framework
Abū al-Barāʾ
Check their projects out: Moaz Website generator, Image Compressor, QR Code Scanner, QR Code Generator, Hangman Code Generator, Text Transformer, Text to voice converter, Typing Speed Test, Currency Convertor , Python Learning Website, Pac Man Game, Moaz Video Downloader, Text to Handwriting Converter, Beautiful Chess
Once you ship this you can't edit the description of the project, but you'll be able to add more devlogs and re-ship it as you add new features!
Improved the delete flow with confirmation and animation. For both grid view and item view, the delete button now shows an alert to confirm this action. And in item view, the whole view turns red and dismisses on confirming deletion.
Fixed the cropping library! Wrapped the toolbar buttons in a GlassEffectContainer along with adding a .interactive() attribute to complete the Liquid Glass implementation. Pull Request can be found at https://github.com/benedom/SwiftyCrop/pull/42. Took a lot of trial and error to figure out why I can't press the toolbar buttons after adding the GlassEffectContainer, all I needed was a .contentShape to fix the hit-testing. Squashed my commits but it mostly revolved around zIndex and ZStacks. Next devlog will probably revolve around improving the delete flow, animations and confirmations.
Implemented the camera feature in ItemCreationView and ItemView. Forked MijickCamera and applied some fixes to compile for iOS 26 and address an issue with controls disappearing by ensuring the close button can always be accessible. Might look into the other library SwiftyCrop next with a bug in how the top buttons can't be pressed in a certain condition.
Did some iPadLayout compacting in ItemView. But mostly moved the photo library picker back to the old implementation, this is to allow the button that invokes image picker to appear in a sub-menu. Added a new library MijickCamera to allow taking photos inside the app to use for the item's image. As of now there are some issues with it, such as the disappearing camera controls. Will probably fork and address these changes for the app in the next devlog.
Implemented a Find Item Siri Intent. Technically the app should be integrated with SiriKit now to find items, but the custom app controls seem to not work yet. In the video you can see the example usage of the Find Item shortcut action. Went through different iterations with the implementation, landed on AppIntents for this one. Next update will most likely feature some quality-of-life improvements, such as deletion confirm and animation as well as a Pinned Items tab.
Spent some time working inside ItemView. Tried to cleanup and improve performance in this view, simplifying code and making it more readable. Though, most of the time here was spent on fixing the iPad view, it took me a bit of trial and error to find a solution to the image/symbol background reacting to the keyboard opening. Changing the image to scaledToFit works as a great trade-off, works well with the return of the horizontal fading gradients. These changes also shouldn't have changed anything on the iOS side of the view as seen in the video.
New on the left - Old on the right <br>
Added character limits to all the name text fields. 32 for Item Name, 40 for Category and Location. Also added whitespace and new line filtering to everywhere, which was the root cause of the new category bug previously. Also fixed a bug where you cannot remove categories from items, as seen on the right.
Updated a few functions to utilize the new CloudKitSyncEngine functions. Tombstoning the item ID to keep track of what was actually deleted. This should really stop stuff from re-appearing after syncing. Video basically tries to make the latest data say that it still exists, when it was already deleted on iPad. <br>
Not seen in the video but editing items currently causes them to move to a new category than using the existing one for some reason. Also picking photos does not always work, specially with larger files. These will be addressed the next devlog.
Improved the performance of the app overall. Cleaned up a bit of the Item Card code and made the dragged card become a simplified version, basically turn off liquid glass there. And the biggest change, wrapped the item card and the item view in a GlassEffectContainer, improving performance and enabling smooth view animations ran by the OS. <br>
Made item updates and deletes asynchronous. And also made a few changes to CloudKitSyncEngine in attempts of making it work better at syncing out-of-sync data.
Updated the website a bit, updated the screenshots, added a new detail and made a favicon/icon.
Worked on the ItemView for iPad even further, fixed the keyboard interactions, and tweaked the body position and size, it should feel less cramped specially while editing. On top of this the info can be collapsed to only show the name and view controls, allowing you to see the image or symbol completely in cramped window sizes or items with many infos. Along with this, I tweaked with how the symbol was displayed in both iPhone and iPad layouts. Along with even more things.
Adjusted the colors of ItemView, the dismiss button is now always white, except on light mode. The phone layouts were slightly adjusted and are now permanently set to a dark color scheme, this theme is superior at legibility and color contrast. Not seen in the video, the background now ignores keyboard popups but makes the iPad layout buggy with it not adjusting.
More Accent Color, though it looks a bit odd, it should help with instilling the app look. Seen first is the new item card and ItemView, with unrestricted text colors, more usage of accent color and more legible usage of the location's color. Next I updated the SearchView, with new Category and Location filtering setup as seen in the video. Next devlog will most likely include adjusting the colors in the ItemView phone layouts, adding a monotone dark theme back and possibly also a light theme.
I have identified the cause of the slowdown on iPad, it seems the LazyVGrid (the view that allows the rows to be two columns on iPad in the wide screen size) causes the slowdown, though only when displaying two columns. I found a workaround by adding an .id attribute to the LazyVGrids, it is now more usable on iPad. Along with this I also worked on making the Grid View mode functional, you can hide items from hidden locations and categories, and everything should work as intended. I might move to polishing the app next devlog, but that's not certain.
Somewhat of a long repetitive video, tl;dw The grid view seems to have some weird slowdown issues occasionally on iPadOS, on the other hand, it performs really well on iOS now. Items are now filtered asynchronously after the view loads, hence the spinner being visible for a split second. This should improve snappiness whilst maintaining the new filter method. I'll aim to look into the obvious bugs and quirks next devlog such as the inventory scroll view clipping the tab bar gradient.
Updated the app icons to match the in-app gradient configuration, where its light at the top and dark at the bottom. Though the new icon format seems to be buggy in previous iOS versions (the one on the left iPad) where the tinted icons have barely visible features. But foremost was the attempts at getting InventoryGridView to have a working user activity. Various changes, from how each view is stated to be active, how and where the grid view is shown as a fullscreen cover, changing the mechanics of the user activity active in both inventory and inventory grid, and then changing them in the other views. I also looked into how other activities (search) don't seem to show/work in Handoff or Siri Suggestions. Alas it seems only the state restoration works as seen later in the video and trying to restore the grid view does not. I might look into this again in the future, but for now I'll look into speeding up the Inventory Grid View, as in the video it is really that slow to open often times.
After a few trial and errors, I updated the way items are passed to the rows and the grid view. Tried to show it the best way possible here (Old version on the left, new on the right). Previously I passed a static variable that does not update when a change happens outside the grid. On the new one, if a change happens in the background, you can see it update while inside the view. Whilst trying to debug the different ways to do this, I removed the View (Category/Location/etc) user activity, I plan to bring this back on the next devlog.
The final stretch, updated my previous website I made for my previous app and updated it a bit and added rInventory there. I just added a small headline and description of the app, along with a screenshot that should describe the app. Will probably add a few screenshots to the TestFlight and should be good to ship.
Attempt 2 at getting the hours to attach to the dev log, these were my testing methods, typically these clashing changes would cause the CloudKitSyncEngine to kick in the deduplicator which in some convoluted explanation, cause the DataModel cleanup to delete it. Syncing is slower when clashing but no longer causes issues (The clash also resolves after awhile).
Probably one of the 1 hour and a half of my life, debugged the heck out of CloudKitSyncEngine. To be clear most of it is really outside my understanding and I tried working with it with all the AI I can throw. At the end, it (probably) gave a few improvements and a little brainstorm I thought maybe the things were being deleted due to the cleanup inside the DataModel clashing with the cleanup inside my CloudKitSyncEngine. After some minimal testing, it appears they no longer delete themselves randomly. I also added a clear button to the Location and Category text fields in the ItemView (After needing to re-populate them from the default whenever the model discombobulates).
Created an App Icon (Both in classic and Icon Composer)! Along with renaming the app due to limited app name availability q_q, the code and identifier remains to be Inventory but user facing app name will now be rInventory. Along with this I also worked on setting up the TestFlight, through here! (Might not have an available build yet) https://testflight.apple.com/join/T5hpanZA
Basic features complete, with most having extra polish. The empty inventory screen now reflects the redesigned look. The inventory view options now all work, allowing you to hide certain rows you might not want (such as the Recently Added row). The main All Items row also expands on iPad when the Recently Added row is hidden. The user configs have been updated to perform better and that means instant theme changes. All this should be a good enough ship, I will probably work on a website with a video to allow one to grasp the app without necessarily needing to download (as it will only be available for Apple Devices).
Changes all around, with a refreshed look for the main inventory view, with each row having a shelf. And on iPad the interface is made more dense, showing 2 columns on the big screen. The settings view along with a bunch of CloudKitSyncEngine improvements allow you to sync now and make some config changes (themes typically require app restarts as of now). There is also a new view where you can hide and re-order Locations and Categories, along with options for hiding each in the main view, and a few placeholder settings. Overall some performance improvements were attempted, with most scroll views clipping exceeding views again, also improving adaptability to smaller screen sizes. There are still some notable quirks such as the duplicating Categories and Locations, which I'm really trying to patch.
After a bit of sick day(s) and smaller updates by day, I worked on a few of the app experiences in the UI and behind the scenes. Firstly, a fresh and empty inventory has a new look, a small text prompt and a ghost of a grid. Next is the new edit mode, where you can select multiple items which you can delete by mass. Then the slightly bigger update, implemented the CloudKitSyncEngine, used to control the iCloud integration better and enable manually triggering a sync. Last but not the least are performance improvements behind the scenes, with the inventory views and the item views being overhauled to prioritize performance, one of these are visible with the lazy loading images, which appear when opening the home, search, grid and the item itself. Overall there are probably a few more changes like even more consistent padding and obviously removing the inventory grid from the main view as I tinker with the app's look and feel.
Relatively simple update on the front, starting to work on what will be closer to the final look of the app. A slight facelift with more consistent padding on the main inventory, and your items now appear in rows, with up to 5 being shown in the row and the rest being in a new screen. In the back, a lot of refactoring has gone on, from cleaning up the views, unifying redundant code, documentation and good old organization. A few bugs were also fixed, such as editing location colors not working.
More tiny updates, tweaked and fixed the user activities! This should now work as expected, as well as adding a few more states to recover. In search, it should now recover what category you were sorting, and in settings, well it should open the app back there if you were there. (I figured out the correct way of testing, which you can now see by dismissing the app and stopping the debugger)
A smaller chunky(er) update. Somewhat implemented view state restore and user activities. The latter is not working(?) while the former seems to work, with the app (theoretically) picking up with what sort order and category, or tab you left off with. Quitting the app shows the defaults compared to the restored state (For the 1st quit in the video, I reopened fast enough to recover the state, waiting longer discards this as seen in the 2nd quit).
Along with this is a minor improvement to the dynamic width label for the category and sort order, which works better on older OS versions and on iPad. They now grab the width on launch too rather than being hardcoded.
Significantly revamped the item preview screen for my inventory app. Reducing the GeometryReader from 3 to 1, which made the app feel more responsive and less clunky, reacting better to changes. The iPad UI has been designed to better accommodate the unique sizes of different devices. Every window size can now display the main information, while a larger set of sizes and positions can easily edit with minimal compromise. The old design language has also been further refined. Additionally, the location and category suggestions have a new look and simplified code.
A few more improvements to the overall UI.
Inventory View,
Previously rectangle buttons have been turned into capsules in the non-liquid glass design. The category picker is now inline with the improved sort order, which is now in plain liquid glass. The text in these two menu buttons have also been better animated in accommodating their dynamic widths.
Items,
Items now scale up in the grid when you hover and tap on them. Quantities can now be adjusted in ItemView with a new stepper, also dynamically designed to adapt to either liquid or non-liquid design. With a few minor tweaks to the image background to improve fading.
Settings Tab,
The settings tab now shows the WIP SettingsView, nothing is functional as of now.
OS Support,
In the backend, iOS 17 has been dropped due to crashes suspected to be caused by SwiftData incompatibilities.
A very ✨design✨ centered set of changes. Item preview is further improved with a new flashy image background, a few spacing adjustments and more. Delete functionality and card sort order handling are a few notable code changes, with some additional code cleanups and refactoring behind the scenes.
I hope to get back to adding functionality again by the next dev log. (iPad UI should stop bothering me by now, it is as good as it's gonna get)
New day, new changes! The iPad interface is now ✨less horrible✨ by making the sizing fit the thinnest window size and making it look less awkward in the wider windows.
Sizing around the place has also been optimized for each view, such as in the inventory grid, where the font of the title and such remain compact, while in the creation view, it shows you a larger preview with a larger font.
Legibility has also been improved with a lot of text having backgrounds now. Cropping has also been tweaked with, and I forgot to mention that I am now using SwiftyCrop (No preview since it requires showing my image library...) :)
Another set of updates for my Inventory app, you can now open the item screen and view the item in more detail (planning to add more to this screen), and editing now works fully and flawlessly. Along with this is a landscape view that makes the most of the space and makes the image front and center, making it easy to see where or what the item is.
I plan to improve the iPad UI since it's clunky in this new view and to also improve legibility specially with the category text in the top-left of items. Settings is also being worked on, with a minor road block being triggering and controlling the iCloud sync in-app.
New day new stuff for my inventory app, I got a few changes in the backend, from the way the items are displayed and new sorting options. You can now manually order items, which means you can now sort by order, alphabetically and by modification date. I also worked on the UI that will pop up when you tap an item but it is not yet working as of now :( .
Got the basics of the app working, items can be created and sorted into categories/groups. The main and search menu also has a filter by category and search works by the name and/or location. iCloud sync is also working. Don't have a view yet to edit or get a closer look on the item.