A full-stack web application to manage your personal collection of colognes and shoes.
- Frontend & Backend: Next.js 14 (React framework)
- Database: Supabase (PostgreSQL)
- Authentication: Supabase Auth
- Storage: Supabase Storage (for images)
- Styling: Tailwind CSS
- Deployment: Vercel
Before you start, make sure you have:
- Node.js 18+ installed (Download here)
- A Supabase account (free) - Sign up here
- A Vercel account (free) - Sign up here
- Git installed
- A code editor (VS Code recommended)
# If using Git
git clone <your-repo-url>
cd catalogue-app
# Or download the ZIP and extract itnpm install- Go to supabase.com and create a new project
- Wait for the database to be ready (takes ~2 minutes)
- Go to the SQL Editor in your Supabase dashboard
- Copy and paste the SQL from
supabase/schema.sqlfile - Click "Run" to create your tables
- In your Supabase project, go to Settings > API
- Copy your:
- Project URL
anonpublic key
- Copy
.env.exampleto.env.local:
cp .env.example .env.local- Open
.env.localand add your Supabase credentials:
NEXT_PUBLIC_SUPABASE_URL=your-project-url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your-anon-key
- In Supabase dashboard, go to Storage
- Create a new bucket called
catalogue-images - Make it public:
- Click on the bucket
- Go to Policies
- Add these policies:
- INSERT: Enable "Allow public uploads"
- SELECT: Enable "Allow public reads"
npm run devOpen http://localhost:3000 in your browser!
- User registration and login
- Add/Edit/Delete items (colognes & shoes)
- Image upload
- Filter by category
- Search functionality
- Responsive design
- Secure authentication
- Tags system
- Rating/condition tracking
- Wishlist feature
- Usage tracking
- Analytics dashboard
- Barcode scanning
- Social sharing
catalogue-app/
βββ app/ # Next.js app directory
β βββ api/ # API routes (optional)
β βββ dashboard/ # Dashboard pages
β βββ login/ # Auth pages
β βββ signup/
β βββ page.js # Home page
βββ components/ # React components
β βββ AddItemForm.js
β βββ CatalogueGrid.js
β βββ ItemCard.js
β βββ Navbar.js
βββ lib/ # Utilities
β βββ supabase.js # Supabase client
βββ public/ # Static files
βββ supabase/
β βββ schema.sql # Database schema
βββ .env.local # Environment variables (don't commit!)
βββ package.json
- Push your code to GitHub
- Go to vercel.com
- Click "Add New Project"
- Import your GitHub repository
- Add environment variables:
NEXT_PUBLIC_SUPABASE_URLNEXT_PUBLIC_SUPABASE_ANON_KEY
- Click "Deploy"
# Install Vercel CLI
npm i -g vercel
# Deploy
vercel
# Follow the prompts and add environment variables when askedAfter deployment, create a test account:
- Email: demo@catalogue.com
- Password: (create your own secure password)
- Sign Up: Create an account on the signup page
- Login: Access your personal dashboard
- Add Items: Click "Add New Item" to add colognes or shoes
- Upload Images: Drag and drop or click to upload product images
- Filter: Use the category buttons to filter between colognes and shoes
- Search: Type in the search box to find items by name or brand
- Edit/Delete: Click on any item card to edit or remove it
- Make sure you copied the
anonpublic key, not the service key - Check that
.env.localhas no extra spaces
- Verify your storage bucket is public
- Check bucket name is exactly
catalogue-images
- Delete
node_modulesandpackage-lock.json - Run
npm installagain - Make sure you're using Node.js 18+
- Verify your Supabase project is active
- Check the URL doesn't have trailing slashes
- Make sure you ran the schema.sql file
- Get the basic app running locally
- Understand how each component works
- Customize the design (colors, fonts, layout)
- Add bonus features one at a time
- Deploy and share with friends!
- Don't rush: Take time to understand each part
- Use the console: Check browser console for errors (F12)
- Read error messages: They usually tell you what's wrong
- Google errors: Copy error messages and search them
- Commit often: Save your progress with Git
- Ask for help: Use ChatGPT, Claude, or developer communities
This is your personal project! Feel free to:
- Modify the design
- Add new features
- Experiment and break things
- Learn by doing
MIT - Feel free to use this for learning!
Built with β€οΈ by a beginner developer (you!)