When we last left our hero, we had added collections, tags, relationships, filtering, and pagination to our LinkVault Vapor project. Our app has become way more than a basic CRUD API. Users can organize their saved links, filter them by collection or tag, and page through their data. Now we are going to add some background work… but what does that mean? Let me give you an example that we are going to add to our app. Right now, when a user saves a link, we store exactly what they send us:
Aug 29, 2026 16 min read Read MoreIn the last post we added some validation to our request, created safer response DTOs, moved route logic into controllers, and made our routes.swift much smaller. That was an important step to making the project easier to maintain. Right now, LinkVault can save links for a user, but every link lives in one flat list. That works for a small demo, but real saved-links apps need more structure.
Jul 27, 2026 21 min read Read MoreIn the last post we focused mostly on getting our backend up and running. We added users, password hashing, bearer tokens, protected routes, and user-owned data. At this point, our LinkVault app works. Our users can sign up, log in, create links, and only see their own data. But there is one issue you might have noticed. routes.swift is getting a little messy. This is bad for our code base but a great sign that we need to reorganize some code. In this part, we are going to clean up our API and make it feel more like a production-ready Vapor project. By the end of this post, we will:
Jul 5, 2026 16 min read Read MoreIn Part 2 of this ongoing series about building out my first server-side Swift app, we turned LinkVault from a simple Vapor app into a real database-backed API. We added a Link model, created a migration, connected to Postgres, and built CRUD routes for saving and managing links.
May 5, 2026 23 min read Read MoreIn part 1, we set up a Vapor project to use Fluent + Postgres, learned how to run the app locally in our browser, added some starter routes for us to play with, and returned JSON responses using Swift types. In this post, we’re going to build the first real version of LinkVault, our saved-links backend. By the end, we’ll have:
May 4, 2026 12 min read Read More