Hello

Bonjour

स्वागत हे

Ciao

Olá

おい

Hallå

Guten tag

Hallo

OTB Aprovações

Menu

OTB Aprovações

Out Of The Box · Content approval portal

2026
Overview

A portal for the agency and its clients to create, review and approve content with role-based access, media uploads and email notifications.

Role & Stack

Full-stack developer

Next.js, TypeScript, PostgreSQL, Drizzle, S3

The approval portal

OTB Aprovações is a 2026 private portal for the Out Of The Box agency and its clients to create, review and approve content. It replaces a scattered review process with a defined sequence from draft and version upload through client decision and publication.

I built the full-stack application with Next.js, TypeScript, PostgreSQL and Drizzle. Agency administrators manage every client and artwork, while each client account sees only its own content and cannot access drafts or archived items.

Agency dashboard with items that need attention
Versions and decisions

I implemented the workflow for administrators to register clients, create artwork records and send versions for review. Clients can approve, reject or request changes, with a required comment for rejection and change requests; administrators can then submit another version and repeat the review.

After approval, the administrator marks the artwork as published and may attach its publication link. Authentication and authorization live in the server layer, and email services notify the client when content is ready for a decision.

Instagram profile preview of a client
Application architecture

The App Router contains routes, layouts, pages and server actions, while shared UI components are separated from the server-side domain and use-case layers. PostgreSQL schema and migrations use Drizzle, and media storage is exposed through an S3 integration that targets RustFS locally or Cloudflare R2 in production.

The local environment runs PostgreSQL, RustFS and Mailpit through Docker Compose with separate databases and buckets for development, integration and end-to-end tests. Unit tests run without containers, integration tests reset the database schema and storage, and Playwright exercises the complete application against its own environment.

Client feed preview on mobile
Art review on mobile
Carousel waiting for approval
It replaces a scattered review process with a defined sequence from draft to client decision and publication.