A modern, fast blogging platform built with Next.js, TypeScript, and Firebase.
Techblog is a clean, performant blogging platform designed for technical writers and developers. Built with modern web technologies, it offers a seamless writing and reading experience with real-time features and excellent performance.
- ✅ Real-time blogging with live updates
- ✅ User authentication via Firebase Auth
- ✅ Rich text editor with markdown support
- ✅ Responsive design with dark/light themes
- ✅ Comment system with real-time interactions
- ✅ Image uploads via Cloudinary
- ✅ SEO optimized with automatic meta generation
- ✅ PWA ready with offline support
- Frontend: Next.js 15, React 19, TypeScript
- Styling: Tailwind CSS, Framer Motion
- Backend: Firebase (Auth, Firestore, Storage)
- Deployment: Vercel
- Node.js 18.17.0 or higher
- npm 9.0.0 or higher
-
Clone the repository
git clone https://github.com/DemonicAK/techblog.git cd techblog -
Install dependencies
npm install
-
Set up environment variables
cp .env.example .env.local
Fill in your Firebase configuration in
.env.local:NEXT_PUBLIC_FIREBASE_API_KEY=your_api_key NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=your_domain NEXT_PUBLIC_FIREBASE_PROJECT_ID=your_project_id NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET=your_storage_bucket NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID=your_sender_id NEXT_PUBLIC_FIREBASE_APP_ID=your_app_id # Optional: Cloudinary for image uploads NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME=your_cloud_name
-
Set up Firebase
- Create a Firebase project at Firebase Console
- Enable Authentication (Email/Password and Google)
- Create a Firestore database
- Deploy security rules:
firebase deploy --only firestore:rules
-
Start the development server
npm run dev
-
Open http://localhost:3000 in your browser
- Go to Firebase Console
- Create a new project
- Enable Google Analytics (optional)
- Go to Authentication → Sign-in method
- Enable Email/Password
- Enable Google (configure OAuth consent screen)
- Go to Firestore Database → Create database
- Start in test mode (we'll deploy security rules later)
- Choose a location
firebase login
firebase init firestore
firebase deploy --only firestore:rules| Command | Description |
|---|---|
npm run dev |
Start development server |
npm run build |
Build for production |
npm run start |
Start production server |
npm run lint |
Run ESLint |
npm run type-check |
Run TypeScript checks |
src/
├── app/ # Next.js App Router pages
├── components/ # Reusable React components
├── lib/ # Utility functions and services
├── types/ # TypeScript type definitions
└── contexts/ # React Context providers
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch
git checkout -b feature/your-feature-name
- Make your changes
- Commit your changes
git commit -m "Add: your feature description" - Push to your fork
git push origin feature/your-feature-name
- Create a Pull Request
- Follow the existing code style
- Write TypeScript for type safety
- Add comments for complex logic
- Test your changes locally
- Update documentation if needed
Found a bug or have a feature request? Please open an issue with:
- Clear description of the problem/feature
- Steps to reproduce (for bugs)
- Expected vs actual behavior
- Screenshots if applicable
This project is licensed under the MIT License - see the LICENSE file for details.
- Next.js for the React framework
- Firebase for backend services
- Tailwind CSS for styling
- Framer Motion for animations
Built with ❤️ by Arijit Kar