A modern personal website built with Next.js, React, TypeScript, and Tailwind CSS.
- Modern, responsive design with Tailwind CSS
- Server-side rendering with Next.js App Router
- Dynamic content from Supabase database
- Optimized for performance with Next.js image optimization
- Mobile-friendly navigation with animated menu
- Framework: Next.js 14 with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Database: Supabase
- Deployment: Vercel
- UI Components: Radix UI
- Analytics: Vercel Analytics
- Node.js 18.17.0 or later
- npm or yarn
- Supabase account (for database functionality)
-
Clone the repository:
git clone https://github.com/yourusername/doug-is.git cd doug-is
-
Install dependencies:
npm install
-
Create a
.env.local
file in the root directory with the following variables:NEXT_PUBLIC_SUPABASE_URL=your_supabase_url NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key
-
Start the development server:
npm run dev # or use the provided script ./dev.sh
-
Open http://localhost:3000 in your browser to see the result.
/src/app
: Next.js App Router pages and API routes/src/components
: Reusable UI components/src/lib
: Utility functions and services/src/content
: Static content for the website/supabase
: Supabase configuration and migrations/scripts
: Utility scripts for development and database management
The project uses a simplified single-file migration approach for Supabase. The complete schema is defined in /supabase/migrations/20000000000000_schema_setup.sql
.
If you need to reset your database and apply the migration:
-
Reset your database (WARNING: this will delete all data):
-- Run this in Supabase SQL Editor DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public;
-
Apply the migration:
# Make sure you've logged in and linked your project first supabase login supabase link --project-ref tzffjzocrazemvtgqavg # Push migrations supabase db push
The schema includes these main tables:
posts
: Blog posts with title, content, and publishing statuscontact_messages
: Contact form submissionsuser_roles
: User role assignments for access control
The project is deployed on Vercel. Any push to the main branch will trigger a new deployment.
Make sure to set the following environment variables in your Vercel project:
NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_ANON_KEY
First, run the development server:
npm run dev
# or
yarn dev
Open http://localhost:3000 with your browser to see the result.
This project is licensed under the MIT License - see the LICENSE file for details.