A modern, full-stack notes application built with Next.js, featuring real-time updates, AI-powered features, and a beautiful user interface.
- 📝 Create, edit, and delete notes
- 🔍 Advanced search functionality
- 🤖 AI-powered features using Google's Generative AI
- 🌙 Dark/Light mode support
- 🔒 User authentication
- 📱 Responsive design
- ⚡ Real-time updates
- 🎨 Modern UI with Tailwind CSS
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS 4
- Database: Prisma ORM
- Authentication: Supabase
- AI Integration: Google Generative AI (Gemini)
- UI Components: Radix UI
- State Management: React Hooks
- Deployment: Vercel (recommended)
- Node.js (v18 or higher)
- npm or yarn
- Supabase account
- Google Generative AI (Gemini) API key
- PostgreSQL database (for local development)
-
Clone the repository:
git clone https://github.com/yourusername/notes-app.git cd notes-app
-
Install dependencies:
npm install # or yarn install
-
Set up environment variables: Create a
.env
file in the root directory with the following variables (refer to.env.type
for the required variables):# Database Configuration DATABASE_URL=your_database_url # Supabase Configuration SUPABASE_URL=your_supabase_url SUPABASE_ANON_KEY=your_supabase_anon_key # Application Configuration NEXT_PUBLIC_BASE_URL=http://localhost:3000 # AI Configuration GEMINI_API_KEY=your_gemini_api_key
-
Run database migrations:
npm run migrate # or yarn migrate
-
Start the development server:
npm run dev # or yarn dev
The application will be available at http://localhost:3000
The application uses the following environment variables (defined in .env.type
):
DATABASE_URL
: Your PostgreSQL database connection stringSUPABASE_URL
: Your Supabase project URLSUPABASE_ANON_KEY
: Your Supabase anonymous keyNEXT_PUBLIC_BASE_URL
: The base URL of your applicationGEMINI_API_KEY
: Your Google Generative AI (Gemini) API key
npm run dev
- Start the development servernpm run build
- Build the application for productionnpm run start
- Start the production servernpm run lint
- Run ESLintnpm run migrate
- Run database migrations
notes-app/
├── app/ # Next.js app directory
├── components/ # Reusable UI components
├── actions/ # Server actions
├── hooks/ # Custom React hooks
├── providers/ # Context providers
├── lib/ # Utility functions
├── prisma/ # Database schema and migrations
├── public/ # Static assets
├── auth/ # Authentication related code
├── .env.type # Environment variable type definitions
└── .env # Environment variables (not tracked in git)
- Ensure you have PostgreSQL running locally
- Create a new database for the application
- Update the
DATABASE_URL
in your.env
file - Run migrations to set up the database schema
- Start the development server
The .env.type
file serves as a template for required environment variables. Copy this file to .env
and fill in the appropriate values for your environment.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js team for the amazing framework
- Supabase for authentication and database
- Google for the Generative AI (Gemini) API
- All contributors and maintainers