NewsPulse is a modern, fast, and scalable newsletter web application powered by Next.js and Bun. It features seamless user authentication via GitHub, intuitive newsletter creation, and reliable email delivery. The app boasts a sleek, responsive UI built with Tailwind CSS and uses TypeScript for type safety and maintainability. This project emphasizes performance and developer experience through a cutting-edge tech stack.
- User authentication with GitHub using NextAuth.js
- Newsletter management (creation, editing, sending)
- Subscriber management
- Responsive and modern UI with Tailwind CSS
- Fast development and runtime with Bun
- Secure and scalable backend with Next.js API routes
- Email delivery integration (to be added)
- Frontend & Backend: Next.js (React framework with server-side rendering)
- Runtime: Bun
- Styling: Tailwind CSS
- Authentication: NextAuth.js with GitHub provider
- Language: TypeScript
- Bun installed and configured
- GitHub OAuth app credentials (Client ID and Client Secret)
- Node.js (optional, for some tools if needed)
- Clone the repository:
git clone https://github.com/ayushedith/newspulse.git
cd newspulse
- Install dependencies using Bun:
bun install
- Create a
.env.local
file with the following environment variables:
NEXTAUTH_SECRET=your-strong-random-secret
NEXTAUTH_URL=http://localhost:3000
GITHUB_ID=your_github_client_id
GITHUB_SECRET=your_github_client_secret
- Open your browser and navigate to http://localhost:3000.
- Sign in using your GitHub account.
- Access the dashboard to create and manage newsletters.
- Add subscribers and send newsletters (feature to be implemented).
- Customize email templates and settings.
Contributions are welcome! Please follow these steps:
- Fork the repository.
- Create a feature branch (
git checkout -b feature-name
). - Commit your changes (
git commit -m 'Add feature'
). - Push to the branch (
git push origin feature-name
). - Open a Pull Request.
This project is licensed under the MIT License.
Created with ❤️ using Next.js, Bun, and Tailwind CSS.