← Back to posts

Mar 09, 2026

Building a Digital Sanctuary: Finishing Sprint 1 of Alcove

Beyond the Code: How I bridged Laravel architecture with a "Slow Tech" aesthetic.

Hi friends!

I’m so happy to start this week off with the completion of Sprint 1 of Alcove. Our personal sanctuary to read our books without pressure, and to keep track of our goals!

When I last wrote to you, we were talking about the “Intellectual Core”. Setting up our Models and protecting our database. But a library isn’t just a database of books; it’s an atmosphere. This week, I moved from the terminal to the browser to build the “Reading Room” itself.

Here is how we finished the cycle and turned a collection of SQLite rows into something the average person can enjoy!




The Front Desk (Routes & Controllers)
-------------------------------------------
If the Model is the Librarian, the Controller is the Researcher. It takes your request, “I want to see my books”, and goes into the stacks to find them.

I set up my BookController to handle the “Reading Room” (the Index) and the “New Addition” (the Create form).



Tidbit: I chose to keep the app focused. Instead of bouncing between five different pages, most of the action happens inside one unified view. This reduces the “digital noise” and keeps you (the user) centered.




public function index()
{
// Fetching the books to display on our shelves
$books = Book::latest()->get();
return view('alcove', compact('books'));
}




The Architectural Bridge (Debugging the Layout)
--------------------------------------------------



Building in public means sharing the messy parts, too. I ran into a classic Laravel hurdle: Component Namespacing.

I am using Flux UI to power some of my interfaces, but I wanted a custom layout. I kept hitting a wall:



Unable to locate a class or view for component [layouts.app].



The Fix: Laravel 12 looks for components in very specific folders. I had to create a “bridge” component at



resources/views/components/layouts/app.blade.php.


It was a reminder that even when using modern tools, understanding the “file-path logic” of Laravel is key.


Designing for Stillness (The View)
-----------------------------------


This was the most rewarding part of the sprint. I didn’t want a “Task Manager” for books. I wanted an Alcove (tehe).

I moved away from standard, bright white dashboards and embraced a “Midnight Library” aesthetic.

The Atmosphere: I used a deep charcoal background (#0f110d) and a soft radial glow at the top of the screen to mimic a single lamp in a dark room.

The Detail: Each book isn’t just a list item; it’s a “Spine.” By adding a subtle left-border to my cards, they look like physical objects sitting on a shelf.

Slow UI: I used a 700ms transition on hovers. In a world of “instant satisfaction,” Alcove moves at the pace of a turning page.

The "Safety Net" (Handling Empty States)
-----------------------------------------
There is a beauty in a fresh start. I used Laravel's @forelse directive to handle the moment a user first logs in.



@forelse ($books as $item)

@empty

The shelves are quiet. For now.


@endforelse



It’s great logic to include if a user hasn’t added any books yet. I like to design with some humor, or at least a human touch to it. It adds notes from me, a developer, to the user. Hopefully, I have enhanced the experience.

Sprint 1: The Recap
----------------------
The Environment: Herd and SQLite are running well!

The Core: Models and Relationships are defined.

The Interface: The Reading Room is built and styled.

The Action: We also now have Create, Read, Edit, and Delete (CRUD), and Statuses for our collection.



We’ve successfully built the container. Now, in Sprint 2, we begin to build the experience. We’ll be adding a “Reflections” field, a place for notes that aren’t for a “review score,” but just for you. Maybe also some digital books that you can see once you start to add them to your collection.

I’m carving out a digital space where the only metric that matters is how many chapters I enjoyed.

If you are building with Laravel, let me know if there are any little tricks you like to use to refactor or make your coding experience easier. As always, you can follow the updates on my GitHub here: https://github.com/Fabianamichelle/Alcove

Let’s Build it Beautifully,

Fab