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.
- 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.
- 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 (Powered by Redis).
- Follow System: Build your network by following favorite authors and creators to stay updated with their latest work.
- Easy Sharing: Share your published stories and moments across platforms with a single click.
MarkLink is built using a modern, robust, and scalable technology stack:
- ElysiaJS: A fast and typesafe web framework for Bun.
- Drizzle ORM: TypeScript-first Object Relational Mapper for maximum type safety.
- PostgreSQL: Advanced open-source relational database.
- Better Auth: Secure authentication solution with GitHub social login.
- Redis: In-memory data structure store for real-time features.
- Cloudinary: Cloud-based image and video management.
- React 19: The latest version of the popular library for user interfaces.
- TanStack Start: Full-stack React framework for SSR and type-safety.
- TanStack Router: Type-safe routing for React applications.
- TanStack Query: Powerful asynchronous state management.
- Tailwind CSS 4.0: 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.
Follow these instructions to set up the project locally.
Ensure you have the following installed on your machine:
- Bun (v1.x or higher)
- PostgreSQL (running locally or a cloud instance)
- Redis (running locally or a cloud instance)
-
Clone the repository:
git clone <repository-url> cd marklink
-
Install dependencies for both Backend and UI:
# Install Backend dependencies cd backend bun install # Install UI dependencies cd ../ui bun install
-
Backend Environment: Create a
.envfile in thebackenddirectory:cd backend touch .envAdd the following variables:
DATABASE_URL=postgres://user:password@localhost:5432/marklink REDIS_HOST=localhost GITHUB_CLIENT_ID=your_github_client_id GITHUB_CLIENT_SECRET=your_github_client_secret UI_CLIENT_URL=http://localhost:3001 CLOUDINARY_URL=your_cloudinary_url
-
Frontend Environment: Create a
.envfile in theuidirectory:cd ../ui touch .envAdd the following variables:
VITE_SERVER_URL=http://localhost:3000
Navigate to the backend directory and use Drizzle Kit to push the schema:
cd backend
bun run pushYou need to run the backend and frontend separately.
cd backend
bun run devThe server will run on http://localhost:3000. Documentation (Scalar) is available at http://localhost:3000/api/v1/reference.
cd ui
bun run devThe frontend will be available at http://localhost:3001.
marklink/
├── backend/ # ElysiaJS Backend
│ ├── src/ # Source code
│ ├── drizzle/ # Database migrations
│ └── ...
├── ui/ # TanStack Start Frontend
│ ├── src/ # Source code
│ ├── public/ # Static assets
│ └── ...
└── README.md # Project documentation
- Fork the repository.
- Create your feature branch (
git checkout -b feature/amazing-feature). - Commit your changes (
git commit -m 'Add some amazing feature'). - Push to the branch (
git push origin feature/amazing-feature). - Open a Pull Request.
This project is currently private/UNLICENSED.