Skip to content

MarkLink is a comprehensive platform designed for writers and readers to engage in a seamless ecosystem of content creation and consumption. Whether you're drafting your next novel, sharing a quick thought, or connecting with your favorite authors, MarkLink provides the tools you need.

Notifications You must be signed in to change notification settings

ArifulProtik/MarkLink

Repository files navigation

MarkLink

A Blog and Book Writing And Publishing Platform where people can connect, write, share, and publish.

MarkLink is a comprehensive platform designed for writers and readers to engage in a seamless ecosystem of content creation and consumption. Whether you're drafting your next novel, sharing a quick thought, or connecting with your favorite authors, MarkLink provides the tools you need.

Features

✍️ Writing & Publishing

  • Advanced Editor: A powerful, notion-style editor based on Tiptap for a rich writing experience.
  • Blogs & Books: Support for both short-form blog posts and long-form book publishing.
  • Drafts: Save your work in progress and publish when ready.

🌐 Social Connectivity

  • Moments: Share short, social-media-style posts to engage with your audience instantly.
  • Chat: Real-time messaging to connect privately with other users and authors.
  • Follow System: Build your network by following favorite authors and creators to stay updated with their latest work.

🔗 Sharing

  • Easy Sharing: Share your published stories and moments across platforms with a single click.

Tech Stack

MarkLink is built using a modern, robust, and scalable technology stack:

Backend

  • NestJS: A progressive Node.js framework for building efficient and scalable server-side applications.
  • Drizzle ORM: TypeScript-first Object Relational Mapper for maximum type safety.
  • PostgreSQL: Advanced open-source relational database.
  • Better Auth: Secure authentication solution.
  • tRPC: End-to-end typesafe APIs.

Frontend

  • React: The library for web and native user interfaces.
  • TanStack Start: Full-stack React framework.
  • TanStack Router: Type-safe routing for React applications.
  • TanStack Query: Powerful asynchronous state management.
  • Tailwind CSS: A utility-first CSS framework for rapid UI development.
  • Shadcn UI: Beautifully designed components built with Radix UI and Tailwind CSS.
  • Bun: Fast all-in-one JavaScript runtime and package manager.

Getting Started

Follow these instructions to set up the project locally.

Prerequisites

Ensure you have the following installed on your machine:

  • Bun (v1.x or higher)
  • Node.js (v20 or higher - though Bun is the primary runtime)
  • PostgreSQL (running locally or a cloud instance)

Installation

  1. Clone the repository (if not already done):

    git clone <repository-url>
    cd marklink
  2. Install dependencies for the root workspace:

    bun install
  3. Install dependencies for the frontend:

    cd ui
    bun install
    cd ..

Environment Setup

  1. Backend Environment: Duplicate the .env.example file (if available) or create a .env file in the root directory:

    cp .env.example .env

    Make sure to update DATABASE_URL and other secrets.

  2. Frontend Environment: Create a .env.local file in the ui directory:

    cp ui/.env.example ui/.env.local

Database Setup

Use Drizzle Kit to push the schema to your database:

bun run db:push

Running the Project

You can run the backend and frontend separately.

1. Backend (API)

Start the NestJS server in development mode:

bun run start:dev

The server will typically run on http://localhost:3000.

2. Frontend (UI)

Open a new terminal window, navigate to the ui directory (if you want to run it directly from there) or use the root script if configured. Assuming you run it from the root specifically for the UI workspace:

bun run ui:dev

Note: Make sure you have a script ui:dev effectively running cd ui && bun run dev or navigate to ui and run bun run dev.

The frontend will be available at http://localhost:3001 (or the port specified in your Vite config).

Project Structure

marklink/
├── src/            # Backend (NestJS) source code
│   ├── app.module.ts
│   └── ...
├── ui/             # Frontend (React + TanStack) source code
│   ├── src/
│   │   ├── routes/
│   │   ├── components/
│   │   └── ...
├── drizzle/        # Database schema and migrations
├── package.json    # Root scripts and dependencies
└── README.md       # Project documentation

Contributing

  1. Fork the repository.
  2. Create your feature branch (git checkout -b feature/amazing-feature).
  3. Commit your changes (git commit -m 'Add some amazing feature').
  4. Push to the branch (git push origin feature/amazing-feature).
  5. Open a Pull Request.

License

This project is currently private/UNLICENSED.

About

MarkLink is a comprehensive platform designed for writers and readers to engage in a seamless ecosystem of content creation and consumption. Whether you're drafting your next novel, sharing a quick thought, or connecting with your favorite authors, MarkLink provides the tools you need.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published