A minimal newsletter creation tool with Google Drive and Gmail integration.
- ✉️ Send newsletters from Google Docs through Gmail
- 📁 Connect to your Google Drive folders
- 👥 Manage subscribers with simple contact management
- 📊 Track delivery status and opens
- 🗓️ Schedule automatic sends based on document names
- Frontend: Next.js 15 (App Router), React 19, Tailwind CSS v4
- UI Components: shadcn/ui
- Authentication: Clerk (Google/Gmail sign-in)
- Backend: Next.js API routes, Supabase Edge Functions
- Database: Supabase (PostgreSQL)
- Node.js 18+ and npm
- Supabase account
- Clerk account
- Google Developer account (for API access)
-
Clone the repository:
git clone https://github.com/yourusername/mininews.git cd mininews -
Install dependencies:
npm install
-
Set up environment variables:
- Copy
.env.local.exampleto.env.local - Add your API keys for Clerk, Supabase, and Google
- Copy
-
Start the development server:
npm run dev
-
Open http://localhost:3000 in your browser.
See supabase/README.md for database setup instructions and schema information.
src/app- Next.js App Router pages and layoutssrc/components- Reusable UI componentssrc/lib- Utility functions and shared logicsrc/types- TypeScript type definitionssupabase- Database schema and migration filesdocs- Project documentation and planning
- 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.
This application requires access to Google Drive to create newsletters. Follow these steps to set up Google Drive integration:
-
Using Clerk OAuth with Google:
- Sign in to the application with your Google account through Clerk
- Visit the test page to verify your connection
- If you're experiencing issues, use the Direct Google Auth setup
-
Direct Google Auth Setup:
- Visit the Direct Google Auth Setup page
- Click "Connect to Google Drive"
- Authorize the application in the Google consent screen
- After successful authorization, you'll be redirected back
- Your Google Drive access is now set up!
-
Required Google Scopes:
- The application needs the following Google API scopes:
https://www.googleapis.com/auth/drive.readonly(for accessing Drive files)https://www.googleapis.com/auth/gmail.send(for sending newsletters)
- The application needs the following Google API scopes:
-
Troubleshooting:
- If you encounter 401 Unauthorized errors, try the Direct Google Auth Setup
- Ensure your Google account has the necessary permissions
- Check that the OAuth credentials are properly configured in your environment