Full-Stack Blog Platform A full-stack blog platform built with React, Redux Toolkit, and Supabase.
Users can sign up, log in, create blog posts, edit/delete their own posts, and interact with content.
Deployed live 👉 blogplatform-coderesol.netlify.app
🚀 Features Core Features 🔑 Authentication: Email + Password login and Google OAuth via Supabase. Sessions are managed with Redux.
📝 Blog Posts: Users can create, view, edit, and delete their posts with support for titles, content, tags, and images. Editing and deleting are restricted to the post's author.
👤 User Profile: A dedicated profile page shows the user's name, bio, profile picture, and all of their posts.
Bonus Features Search: Filter posts by title or tags (case-insensitive).
Comments: Users can add and view comments on posts.
Pagination: Posts load in batches with a "Load More" button for a smooth user experience.
🛠️ Tech Stack Frontend: React, Redux Toolkit, React Router, SCSS
Backend & Database: Supabase (Postgres, Auth, Storage, Auto REST API)
Deployment: Netlify (frontend hosting)
AI Usage: Developed with iterative code generation using Bolt.new.
⚙️ Setup & Run
- Clone the Repository Bash
git clone cd blog-platform-web 2. Install Dependencies Bash
npm install 3. Configure Environment Variables Create a .env file in the project root and add your Supabase credentials:
Code snippet
VITE_SUPABASE_URL= VITE_SUPABASE_ANON_KEY= 4. Run Locally Bash
npm run dev 5. Build for Production Bash
npm run build 🗄️ Database Schema (Supabase) This project uses three main tables. Here is the SQL to set them up:
profiles Table SQL
create table profiles ( id uuid references auth.users(id) primary key, name text, bio text, profile_pic text, created_at timestamp with time zone default now() ); posts Table SQL
create table posts ( id uuid primary key default uuid_generate_v4(), title text not null, content text not null, tags text[] default '{}', image_url text, author_id uuid references auth.users(id), created_at timestamp with time zone default now() ); comments Table SQL
create table comments ( id uuid primary key default uuid_generate_v4(), post_id uuid references posts(id), user_id uuid references auth.users(id), text text not null, created_at timestamp with time zone default now() );
🤖 AI Usage Statement This project was developed with the aid of Bolt.new for rapid prototyping and code generation. My primary contributions involved:
Setting up the Supabase project and database schema.
Providing environment variables and managing configurations.
Writing prompts, integrating the generated code, and debugging.
Deploying the final application to Netlify.
👨💻 Author ABHILASH CHARY