A unified creator workspace with visual canvases, blog publishing, and task planning.
MarkStack is a comprehensive productivity platform designed for developers and content creators. It provides an integrated environment for writing, visual thinking, and structured planning, combining multiple creative tools into a single cohesive workspace.
- Markdown Editor with AI Integration - Monaco-based editor with Google Gemini AI-powered structure conversion
- Visual Canvas - Drawing and diagramming capabilities using Excalidraw
- Blog Publishing System - Transform markdown documents into SEO-optimized blog posts
- Task Planning & Calendar - Integrated todo management with calendar view
- User Authentication - Better Auth integration with Google OAuth support
- Responsive Design - Modern UI built with Tailwind CSS and shadcn/ui components
- Dark/Light Theme - Theme switching with smooth animations
- Real-time Preview - Live markdown preview with syntax highlighting
- Drag & Drop - Image upload support for markdown content
- Next.js 16.1.6 - React framework with App Router
- React 19.2.3 - UI library
- TypeScript - Type safety
- Tailwind CSS 4 - Styling framework
- shadcn/ui - Component library
- Lucide React - Icon library
- PostgreSQL - Primary database
- Prisma 7.5.0 - ORM and database toolkit
- Better Auth 1.5.5 - Authentication solution
- Monaco Editor - Code editing capabilities
- Excalidraw - Virtual whiteboard/drawing canvas
- next-mdx-remote - MDX rendering
- highlight.js - Syntax highlighting
- @ai-sdk/google - Google AI integration
- ai - Vercel AI SDK
- date-fns - Date manipulation
- lodash.debounce - Performance optimization
- nanoid - Unique ID generation
- react-dropzone - File upload handling
- sonner - Toast notifications
markstack/
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── (authentication)/ # Auth routes
│ │ ├── (protected)/ # Protected routes
│ │ ├── (public)/ # Public routes
│ │ ├── api/ # API routes
│ │ └── layout.tsx # Root layout
│ ├── components/ # React components
│ │ ├── auth/ # Authentication components
│ │ ├── canvas/ # Drawing canvas components
│ │ ├── editor/ # Markdown editor components
│ │ ├── layout/ # Layout components
│ │ ├── planner/ # Task planning components
│ │ └── sections/ # Landing page sections
│ ├── lib/ # Utility libraries
│ │ ├── ai/ # AI integration
│ │ ├── auth/ # Authentication configuration
│ │ ├── database/ # Database configuration
│ │ ├── markdown/ # Markdown processing
│ │ └── utils.ts # General utilities
│ └── types/ # TypeScript type definitions
├── prisma/ # Database schema and migrations
├── public/ # Static assets
├── .github/ # GitHub configuration
└── Configuration files # Next.js, TypeScript, ESLint, etc.
- Node.js 18+ or Bun
- PostgreSQL database
- Google Gemini API key (for AI features)
-
Clone the repository
git clone <repository-url> cd markstack
-
Install dependencies
npm install # or bun install -
Set up environment variables
Copy
.env.exampleto.env.localand configure:# Database DATABASE_URL="postgresql://username:password@localhost:5432/markstack" NEXT_PUBLIC_BETTER_AUTH_URL=http://localhost:3000 BETTER_AUTH_URL=http://localhost:3000 GOOGLE_CLIENT_ID="" GOOGLE_CLIENT_SECRET="" # Google AI for markdown structuring GOOGLE_GENERATIVE_AI_API_KEY=your_google_gemini_api_key GEMINI_MODEL=gemini-2.0-flash-exp # Authentication (Better Auth) BETTER_AUTH_SECRET=your_secret_key BETTER_AUTH_URL=http://localhost:3000
-
Set up the database
npx prisma migrate dev npx prisma generate
-
Run the development server
npm run dev # or bun dev -
Open your browser Navigate to http://localhost:3000
- Sign up using email/password or Google OAuth
- Protected routes require authentication
Markdown Editor
- Navigate to
/editorto access the markdown editor - Use the AI Structure button to organize messy notes
- Preview your content in real-time
- Publish directly to the blog system
Visual Canvas
- Create visual diagrams and flowcharts at
/canvas - Use Excalidraw for collaborative whiteboarding
- Save and organize multiple canvases
Task Planning
- Manage todos and deadlines at
/todos - Calendar view for date-based planning
- Track completed and pending tasks
Blog Publishing
- Publish markdown documents as blog posts
- SEO-optimized with automatic table of contents
- Tag system for content organization
The application uses PostgreSQL with Prisma ORM. Key models include:
User- User accounts and authenticationBlog- Blog posts with markdown contentCanvas- Visual canvas dataTodo- Task managementTag- Content categorization
Better Auth handles authentication with support for:
- Email/password authentication
- Google OAuth integration
- Session management
- Protected route middleware
Google Gemini AI is used for:
- Converting messy notes to structured markdown
- Content organization and formatting
- Requires valid API key in environment variables
npm run dev- Start development servernpm run build- Build for productionnpm run start- Start production servernpm run lint- Run ESLintnpm run postinstall- Generate Prisma client
- TypeScript with strict mode enabled
- ESLint with Next.js configuration
- Tailwind CSS for styling
- Component-based architecture with shadcn/ui
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
For support:
- Open an issue on GitHub
- Check existing documentation
- Review the codebase for implementation details
The project is maintained as an open-source creator workspace platform.