Last updated
Eugenia Bravo, a family lawyer and mediator in Málaga, needed a professional website and blog to win clients online. I built it in 2024 and rebuilt it in 2025 so her articles are found on Google, with a secure admin area where she publishes them herself.
Eugenia has 25 years of experience in family law and mediation, and her site combines information about her services with a legal blog. Below are both versions: the original 2024 build and the 2025 rebuild.
I also built a landing page for her free divorce guide that emails the guide automatically to each new subscriber: read the Tu Divorcio Inteligente case study.
The first version was a React single page app with an AWS Amplify backend: a public site with a blog, and a private admin area where the team publishes articles.
To develop this website, I collaborated with a friend who is also my client, choosing technologies that would enhance my software engineering skills rather than relying on out-of-the-box solutions like WordPress or Wix. This approach delivered a robust and customized website.





Since this was a professional project, I used React to leverage my advanced knowledge of the framework. Additionally, implementing TypeScript ensured safer data handling compared to plain JavaScript.
To kickstart development, I experimented with an innovative AI tool called bolt.new, which can generate a project from scratch, run it, and iteratively improve the code based on prompts. I then downloaded the generated boilerplate code to continue development.
In a previous project, I built a Spring Boot backend integrated with an AWS RDS database. However, this approach led to issues such as unexpected crashes, increased development time, and added complexity. As a solo developer with limited time, I needed a simpler yet robust solution. That's when I opted for AWS Amplify, a "backend as a service" solution. Amplify is easier to develop once familiar with it, and it offers a robust, cost-effective infrastructure for small to medium projects, since it is fully managed.
The website strikes a balance between promoting Eugenia's products and inviting users to get in touch, while also providing valuable ad-free blog content.

Home Page
Protected by Amplify's User Authentication, there is a private admin page through which the website team manages content. This portal features a dashboard and an admin panel for modifying, reviewing private posts, or deleting posts.

Admin Dashboard
EugeniaBravo evolved from a plain React single page app into a Next.js build to improve SEO, discoverability, and editorial workflows for a content-driven site. The migration also replaced AWS Amplify with Supabase, which is a better fit for smaller projects that still need auth, storage, and a relational database.
The main goals were to get blog content indexed reliably, improve page performance, and simplify backend operations so the project could stay lean without giving up features like admin tooling, media uploads, and rich content editing.
The rebuild centers around Next.js with TypeScript on the frontend and Supabase for the backend and storage.


Next.js enables server rendering and static generation for the blog, which means crawlers receive full HTML instead of a mostly empty shell. This is a big improvement over plain React for dynamic indexation, because each post can ship complete metadata, canonical tags, and rich previews the moment it is requested.
The build includes sitemaps, robots rules, and per-page metadata so new articles become discoverable quickly. It also improves routing, image optimization, and overall load performance for the public site.
Supabase replaced Amplify to keep the stack lighter and more approachable for a smaller team. With Postgres, built-in auth, and storage in one place, it is easier to maintain than a larger AWS configuration while still providing a robust foundation for the admin dashboard and media workflows.
Auth now supports MFA, posts and categories live in relational tables, and images are stored in Supabase Storage with sensible fallbacks.
Editors manage posts, categories, and authors from the admin dashboard, with TinyMCE for rich content editing and preview flows before publishing. The blog uses SEO friendly slugs, related posts, and recommended cards to keep readers engaged.

Admin Dashboard
The public site combines a marketing funnel with a blog that is easy to browse and fast to load. Services, testimonials, FAQ, and contact pages are all built with the same SEO friendly foundation.

Home Page
The demo branch ships without secrets, runs on in-memory fixtures, and disables writes so reviewers can explore the UI safely. Analytics and cookie tooling are gated behind environment flags to keep the demo isolated from production.
The public demo is available with admin pages enabled at eugeniabravo-public.vercel.app.
Visit the live site at eugeniabravo.com, explore the demo at eugeniabravo-public.vercel.app, or browse the repo on GitHub.
Need legal assistance in Spain? Contact Eugenia!
Thank you for reading,
Julio Macias Gonzalez