Skip to content
Guillaume Ojardias
Home page of lawyer Eva Biezunski’s business website
ClientWeb

Eva Biezunski Avocate

Website for a corporate-law practice, with a publications space.

Goal
Present the practice and its areas of expertise — corporate law (contracts, company formation, etc.), with a focus on self-employed professionals (lawyers, doctors, dentists…).
Result
Turnkey client project, live since June 2026, with a publications space.
Tech stack
Next.jsReactTypeScriptTailwind CSSDjangoDRFPostgreSQLNeonVercel

The client, a lawyer specialized in corporate law, needed a website to clearly present her practice, build trust and make getting in touch easy. Live since June 2026, the site pairs a Next.js / React / TypeScript / Tailwind CSS front end with a Django / DRF backend and a PostgreSQL database hosted on Neon, all deployed on Vercel. It includes a publications space with a dedicated admin interface, friendlier than the Django admin: Eva writes her articles there and manages the categories of the /publications page. I also added an /mcp endpoint so articles can be created from any compatible AI chat, such as Claude Desktop. The code and hosting remain the client’s property.

What I built

The site presents the practice’s areas of expertise on a single page, with a contact form whose messages are emailed through Brevo. A /carte page works as a digital business card, with a downloadable vCard. The Publications section gathers articles on /publications, and the three latest also appear on the home page.

Articles are written in a private admin interface with a Notion-style editor. Markdown stays the source of truth, rendered and sanitized on the server. An article stays a draft until it’s published, and a future date schedules it. Uploaded images are straightened, stripped of their metadata and converted to WebP. Primary categories act as filters on the publications page, and three roles (administrator, editor, author) define who can do what.

The MCP connector exposes tools to list, create, edit, publish or unpublish an article. An article created from an AI chat is a draft by default, and every action follows the role of the token’s owner.

The stack and why

The repository holds a Next.js front end (which also serves the admin interface) and a Django / Django REST Framework backend. The front end’s TypeScript types are generated from the API’s OpenAPI schema: if a serializer changes and the types don’t follow, a test and the CI fail. On the backend, the test suite fails below 90% coverage.

The site is hosted on Vercel, with a PostgreSQL database on Neon and, in production, images stored on Vercel Blob.

Where it stands

The site has been live since June 2026, and the client publishes her articles herself. It was delivered as a turnkey project: the code and hosting belong to her.

On the blog