Skip to content

Ramyprojs/Folium

Repository files navigation

Folium

A modern, Notion-inspired workspace for organized thinking.

Live Demo MIT License Built with Next.js

Next.js TypeScript Tailwind CSS Prisma PostgreSQL Tiptap Zustand Framer Motion Cloudinary Docker

Overview

Folium delivers a focused, modern workspace where teams and individuals can capture ideas, structure knowledge, and publish pages without friction. It combines a Notion-style information architecture with a powerful editor, media workflows, and lightweight collaboration patterns that feel fast in daily use. The app is designed for writers, product teams, researchers, and builders who need both creative freedom and clear organization. From quick notes to shareable documentation, Folium keeps thinking and execution in one place.

Screenshots

📸 Screenshots coming soon — add your own by replacing the image paths below.

Workspace Editor Notes

Features

Workspace & pages

  • Create and manage multiple workspaces with owner/member roles.
  • Build nested page structures for organized navigation and long-form content.
  • Favorite, archive, move, and share pages through a clean action model.
  • Publish selected pages publicly with share links.

Rich text editing

  • Write with headings, lists, task items, code blocks, quotes, dividers, links, and slash commands.
  • Insert advanced images with resize, crop, align, lightbox, replace, and captions.
  • Sketch inside the app and insert drawings directly into pages.
  • Keep content safe with debounced autosave behavior.

Floating notes

  • Open draggable notes on top of workspace pages for rapid side-by-side thinking.
  • Resize, minimize, maximize, close, and snap notes to corners.
  • Pin important notes on top while working across the page.
  • Launch multiple notes at once and multitask fluidly.
  • Create a new note instantly with Cmd/Ctrl + Shift + N.

Uploads & media

  • Upload images and files from the editor.
  • Embed images inline and insert non-image files as links.
  • Use Cloudinary-powered uploads in production.
  • Fall back gracefully for limited upload scenarios when integrations are missing.

Authentication

  • Sign up and sign in with email/password credentials.
  • Enable optional Google OAuth with NextAuth.
  • Use JWT sessions for secure authenticated workflows.

Getting started

  1. Clone the repository.
git clone https://github.com/Ramyprojs/Folium.git
cd Folium
  1. Install dependencies.
npm install
  1. Copy environment template and configure values.
cp .env.example .env
  1. Run database migrations.
npm run prisma:migrate
  1. Start the development server.
npm run dev

Open http://localhost:3000.

Environment variables

Variable Required Description
DATABASE_URL Yes PostgreSQL connection string (Neon/Supabase compatible).
NEXTAUTH_SECRET Yes Secret used by NextAuth for JWT/session encryption.
NEXTAUTH_URL Recommended (prod) Canonical app URL for auth callbacks in production.
AUTH_DISABLED No Development-only auth bypass flag. Keep false in production.
GOOGLE_CLIENT_ID No Google OAuth client ID (optional login provider).
GOOGLE_CLIENT_SECRET No Google OAuth client secret.
CLOUDINARY_CLOUD_NAME Recommended (prod uploads) Cloudinary cloud name for media uploads.
CLOUDINARY_API_KEY Recommended (prod uploads) Cloudinary API key.
CLOUDINARY_API_SECRET Recommended (prod uploads) Cloudinary API secret.
NEXT_PUBLIC_UNSPLASH_ACCESS_KEY No Unsplash search integration for cover browsing.

Deployment

Deploy Folium on Vercel with a Neon (or compatible PostgreSQL) database by setting production environment variables and connecting the repository.

Run production migrations before or during release:

DATABASE_URL="<your-production-database-url>" npx prisma migrate deploy

Cloudinary is required for full upload support in production. Without Cloudinary credentials, upload flows may be limited or fallback-only.

Scripts

Script Description
npm run dev Start the Next.js development server.
npm run build Generate Prisma client and build the production app.
npm run start Run the built production server.
npm run lint Run ESLint checks across the codebase.
npm run prisma:generate Generate Prisma client from schema.
npm run prisma:migrate Create/apply local development migrations.
npm run prisma:migrate:deploy Apply existing migrations to target database.
npm run prisma:studio Open Prisma Studio for database inspection.

API overview

Group Paths
Auth /api/auth/[...nextauth], /api/signup
Workspaces /api/workspaces, /api/workspaces/[id], /api/workspaces/[id]/members
Pages /api/pages, /api/pages/[id], /api/pages/[id]/children, /api/pages/[id]/move, /api/pages/[id]/archive, /api/pages/[id]/favorite, /api/pages/[id]/share
Upload /api/upload
Search /api/search
Comments /api/comments/[id]

Contributing

Contributions, ideas, and improvements are welcome. Open an issue to discuss bugs or feature proposals before submitting a pull request.

License

MIT

About

A modern, Notion-inspired workspace for organized thinking.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages