Building Aurora Art Hub with Next.js and Supabase

Building Aurora Art Hub with Next.js and Supabase

Aurora Art Hub is a full-stack web application with authentication, a PostgreSQL database, multiple related data models, image uploads, and user-specific access control. I built it as a platform where artists can create profiles, upload artwork, and manage what they share publicly.

Live Application

The application is built with Next.js, React, TypeScript, Supabase, Tailwind CSS, and Zod.

Building a Full-Stack Application

I wanted this project to go beyond a frontend demo and give me experience building an application across the full stack.

The application includes separate data models for artists and artwork, with relationships between them. Next.js handles the application and server-side functionality, while Supabase provides the backend services.

Aurora Art Hub uses PostgreSQL Row Level Security to enforce data-level authorization, preventing authenticated users from accessing artwork outside their permitted scope.

Aurora Art Hub database schema
Aurora Art Hub database schema

The core functionality includes:

  • User authentication

  • Artist profiles

  • Artwork creation and editing

  • Image uploads

  • Public and private artwork

  • User-specific access control

  • Form validation

  • Relational PostgreSQL data

Supabase

One of the biggest goals of this project was getting hands-on experience with Supabase and understanding how its different services work together.

I used Supabase for:

  • Authentication — managing user sign-up and login

  • PostgreSQL — storing users, artists, artwork, and their relationships

  • Storage — handling uploaded artwork images

  • Access policies — controlling access to data and stored files

Working with these features together helped me better understand what a backend-as-a-service platform can provide without having to build each piece independently.

It also gave me experience thinking about how authentication, database access, storage, and application permissions interact.

One practical limitation I encountered during development was Supabase's inactivity-based project pausing on its free tier. It's convenient for a personal project, but something to keep in mind when using a hosted backend for an application that needs to remain continuously available.

Validation

I use Zod for form and request validation, keeping validation logic separate from the UI.

This provides a consistent way to validate data before it reaches the database and makes the validation rules easier to maintain.

What I Learned

The biggest takeaway from Aurora Art Hub was getting a much better understanding of Supabase as a backend platform.

Rather than just using a database, I got to work with authentication, PostgreSQL, storage, and access policies as parts of the same platform.

It was a valuable experience in understanding how these services fit together to support a full-stack application.

Technologies: Next.js · React · TypeScript · Supabase · PostgreSQL · Tailwind CSS · Zod

Related Posts