A portfolio and client platform for service professionals

SaaS productConfidential project

A service professional needs a place to present their work and retain the context of a client conversation once an appointment is arranged. This platform combines photo portfolios, inspiration and messaging with the history of the relationship.

Who it serves
Service professionals presenting their work and clients preparing for appointments.
A portfolio of work with client conversations and an appointment diary

The product also includes accounts, subscriptions and administration. Published work and everyday client service can therefore share the same underlying system.

From portfolio to relationship

A photo can help a client choose a professional, but the relationship continues beyond a gallery visit. Inspiration and conversation are useful before an appointment, while previous details provide context for future visits.

The platform brings these needs together with tools for running the service. A client and professional can connect their accounts with a QR code and then work within the context of that relationship.

Presenting work
A photo portfolio lets professionals show their style and previous work.
Appointment context
Messages, selected inspiration and visit history help both sides return to client needs and previous discussions.

Shared context for the relationship

This overview shows how published work and connected accounts relate to the context of future appointments.

Portfolio
The gallery presents the professional’s style and work.
Connected accounts
A QR code helps connect the client and professional.
Appointment context
Inspiration, conversation and history support the ongoing relationship.

Public presentation and daily service

The scope includes a public presentation and a signed-in application. Professionals manage materials and client relationships, while clients can connect accounts, exchange messages and share inspiration.

CRM features retain visit information so a future appointment has useful context. Subscriptions are connected to Stripe payments, and the product is developed as a web application with a separate API.

Running the product
Accounts, permissions and subscriptions provide the foundation for people to use its features.
Connecting accounts
A QR code helps link a client with a professional through their existing accounts.
Relationship history
Visit records and communication organize information that can be useful at a later appointment.
Subscriptions
Plans and payment handling support access to the features offered by the product.

Developing and maintaining the product

Features evolve iteratively, from domain rules and data contracts to the interface. Tests, a staging environment and release verification precede production changes. Maintenance includes event diagnosis and the ability to roll a release back.

Scope of responsibility

Atomic Concept is responsible for the technical concept, architecture and full product lifecycle, from feature scope to deployment and maintenance. Implementation uses coding agents, with code review and verification of their changes.

Data consistency and diagnostics

The architecture connects feature development with ways to understand what happens during execution. Types support code consistency, while data integrity and operational diagnostics are handled in the layers responsible for them.

Shared contracts
Types, validators and API definitions live in a shared kernel. Checked copies are used by the application and API, making discrepancies easier to detect.
Domain-oriented organization (DDD)
Interface code and server operations are organized around product capabilities, making the path from screen to data easier to follow.
Explicit outcomes and consistent data
Expected failures have typed variants. Transactions and locks are used where simultaneous operations need protection.
Operational diagnostics
A custom EventLog records severity, operation context and identifiers connecting related events. Sensitive data is filtered and writes are buffered. Anomaly alerts arrive by email, with a separate reporting path for failures of the primary log store.

Technologies and their use

Application
React, TypeScript and Next.js.
API and data
A separate HTTP API, PostgreSQL and Prisma.
Payments
Stripe for subscriptions and payment events.
Contracts and operations
A shared kernel with checked copies, plus a custom EventLog and alerts.