Participi.ro: digital invitation platform
Digital invitation platform built with Next.js, with a custom multi-step wizard, checkout and an SEO-focused architecture.
Stack: Next.js 15 (Pages Router), React 19, Tailwind CSS 4, Radix UI, Axios
Team: one backend developer, one UI/UX designer (Figma), and one developer who helped with implementation
About the project
Participi is a platform for creating and sending digital invitations for weddings, baptisms, coming-of-age parties, kids’ birthdays and other events. Users pick a template, personalize their invitation, pay online and share it with their guests.
My contribution
I was responsible for the entire frontend and made all the key architectural decisions, from project structure to state management and the API layer. I worked from Figma designs and Postman API documentation, collaborating closely with the backend developer on contracts and with the designer on implementation fidelity.
Architecture. I built the app with Next.js Pages Router and kept the invitation templates isolated from the application’s pages, so templates can be added or changed without touching the core app logic and the codebase stays organized as it grows.
Component system. I built a reusable component library on top of Radix UI primitives and Tailwind CSS, which gave me accessible behavior out of the box (keyboard navigation, focus management, ARIA attributes) and a consistent UI across the whole product.
Invitation wizard and checkout. The most complex part was a multi-step wizard where users fill in their invitation and go straight to payment. I wrote custom form handling and validation instead of relying on a form library, and used React Context for state shared across steps, which gave me full control over the flow. The wizard includes a date picker, Google Maps location selection, file uploads, drag-and-drop ordering (@dnd-kit), photo galleries with lightbox, and audio playback.
Authentication and integrations. I implemented email and Google sign-in with JWT-based sessions, and integrated REST APIs for templates, events, invitations, orders, invoices, discounts, messages and user roles.
SEO and performance. I chose Next.js specifically for SEO. I added per-page metadata and optimized images with
next/imageand conversion to modern formats for faster loading.Accessibility. I built on accessible primitives and kept accessibility in mind throughout the UI.