Skip to content

ajayjainn/InkFlow

Repository files navigation

InkFlow: Your thoughts, beautifully crafted

InkFlow is a full-stack blogging platform built with Next.js, featuring modern web development practices, scalable architecture, robust cloud infrastructure, and efficient asynchronous processing. It enables users to write, publish, and share stories, manage their content, and explore posts from the community.

Technologies and Their Usage

InkFlow leverages a diverse set of modern technologies to deliver a high-performance, scalable, and maintainable application.

The frontend is built with Next.js 15, utilizing Tailwind CSS for styling and Shadcn UI for components. The backend uses Next.js API Routes with PostgreSQL and Prisma ORM. Clerk handles user authentication.

Containerization

  • Docker: Used to containerize the Next.js application and the Nginx reverse proxy, ensuring consistent environments and portability.
  • Nginx: Serves as a high-performance reverse proxy for the Next.js application, directing traffic efficiently.

Cloud Infrastructure

  • Azure: The cloud platform for deploying and hosting InkFlow.
    • Azure Web App: Provides the computing resources to run the web application.
    • Azure Container Registry (ACR): Stores and manages Docker images for the application.
  • Terraform: An Infrastructure as Code (IaC) tool used to define, provision, and manage Azure cloud resources, enabling automated and repeatable deployments.

Asynchronous Processing

  • RabbitMQ: A robust message broker used for asynchronous tasks, specifically to queue and process post notifications. This ensures that operations like sending emails don't block the main application thread. A dedicated worker consumes messages from the queue to handle email notifications.

Continuous Integration/Continuous Deployment (CI/CD)

  • GitHub Actions: Automates the development workflow by running build, lint, and over 16 Vitest tests on every push and pull request to the main branch, ensuring code quality and deployment readiness.

Features

  • Instant Publishing: Publish your articles instantly and make them accessible to your audience.
  • User Dashboard: A personalized dashboard to manage your posts, view statistics, and quickly access common tasks.
  • Public Blog Explorer: Discover inspiring content from the community, with options to search and sort posts by various criteria like newest, oldest, most popular, and trending.
  • Post Management: Easily view, edit, and delete your blog posts from your personal dashboard.
  • Asynchronous Notifications: Email notifications are sent when new posts are published, handled by a dedicated worker for efficient background processing.

Project Structure

.
├── .github/workflows/      # GitHub Actions for CI/CD
├── docker-compose.yml      # Docker Compose configuration for local environment
├── Dockerfile              # Dockerfile for the main Next.js application
├── nginx/                  # Nginx configuration and Dockerfile
├── prisma/                 # Prisma schema, migrations, and database setup
├── public/                 # Static assets (images, manifest)
├── src/                    # Source code of the Next.js application
│   ├── app/                # Next.js pages and API routes
│   ├── components/         # Reusable React components (UI, forms, navigation)
│   ├── hooks/              # Custom React hooks
│   ├── lib/                # Utility functions and service integrations (Prisma, Clerk, RabbitMQ)
│   └── types.ts            # TypeScript type definitions
└── terraform/              # Terraform configuration for Azure deployment
└── worker/                 # RabbitMQ notification worker

License

This project is licensed under the MIT License.

About

InkFlow is a full-stack blogging platform built with Next.js, featuring modern web development practices, scalable architecture, robust cloud infrastructure, and efficient asynchronous processing. It enables users to write, publish, and share stories, manage their content, and explore posts from the community.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors