Markify is a professional, high-performance web application designed to convert Markdown into beautiful, high-fidelity PDF reports. Built with Next.js, Playwright, and Tailwind CSS v4, it features real-time preview, image support, and seamless Mermaid diagram support.
- π Pro PDF Generation: High-fidelity PDF output using Playwright engine.
- π Mermaid Support: Native support for diagrams and charts within Markdown.
- π Live Preview: Real-time side-by-side rendering as you type.
- πΌοΈ Image Support: Seamless rendering of local images.
- π Secure Auth: Seamless Google OAuth integration with NextAuth.js v5.
- π File Management: Robust storage and organization of your documents.
- π¨ Elite UI: Stunning dark-mode interface built with Shadcn UI.
- π³ Docker Ready: Fully containerized for instant deployment.
Real-time side-by-side editing with instant feedback, local image rendering, and diagram support.
Convert entire folders, extensive archives, or multiple files into polished PDFs in seconds.
- Framework: Next.js 16
- Core Library: React 19
- Language: TypeScript
- Styling: Tailwind CSS v4
- UI Components: Shadcn UI
- Icons: Lucide React
- Database: PostgreSQL
- ORM: Prisma
- Authentication: NextAuth.js v5
- PDF Engine: Playwright
- State Management: Zustand
- Containerization: Docker
Markify uses a hybrid setup: Docker for services (Database) and either Docker or local Node.js for the application.
Ensure you have the following installed:
- Node.js 20+
- Docker and Docker Compose
- Git
Install the necessary browser binaries for PDF generation (Only required for local development):
npx playwright install chromium
sudo npx playwright install-deps chromium # Linux onlygit clone https://github.com/nishan-paul-2022/markify-md-to-pdf-converter
cd markify-md-to-pdf-converterCreate your environment configuration:
cp .env.example .envOpen .env and configure the following:
Essential settings for the application server.
NEXTAUTH_URL: The base URL of your application. Defaults tohttp://localhost:3000.AUTH_TRUST_HOST: Required for authentication to work inside Docker. Defaults totrue.AUTH_SECRET: Runopenssl rand -base64 32in your terminal and paste the output string here.
To enable user login, you must set up Google OAuth:
- Go to Google Cloud Console and create a new project.
- Navigate to APIs & Services > Credentials > Create Credentials > OAuth client ID.
- Select Web application as the application type.
- Fill in the App Name
- Under Authorized redirect URIs, add:
http://localhost:3000/api/auth/callback/google - Click Create.
- Copy the Client ID and Client Secret into the
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETfields in your.envfile.
Settings for the PostgreSQL database connection. All have workable defaults.
POSTGRES_USER: Database username.POSTGRES_PASSWORD: Database password.POSTGRES_DB: Name of the database.DATABASE_URL: Full connection string for local development.
Configuration for container-to-container communication. All have workable defaults.
DOCKER_DATABASE_URL: Connection string used by the app container to reach the database container.APP_CONTAINER_NAME: Name for the application service container.DB_CONTAINER_NAME: Name for the database service container.
Credentials for the PgAdmin database management interface. All have workable defaults.
PGADMIN_DEFAULT_EMAIL: Email for PgAdmin login.PGADMIN_DEFAULT_PASSWORD: Password for PgAdmin login.
Run the setup command to install dependencies, build containers, and sync the database schema.
make setupChoose the method that fits your needs:
Runs the entire application suite in Docker containers.
make upRuns the app locally with hot-reloading enabled, connected to the Dockerized database. Best for coding.
make devAccess the app at: http://localhost:3000


