Create once, share everywhere - A modern platform for creating documents and forms with automatic translation to 50+ languages.
LaunchOnce is a powerful content management platform that allows you to:
- Create Rich Documents - Write product announcements, portfolios, or any content with a beautiful rich text editor
- Build Interactive Forms - Create surveys, feedback forms, and questionnaires attached to your documents
- Share Globally - Your content is automatically translated to 50+ languages for worldwide reach
- Zero Setup - Get your content live in under 2 minutes with a unique shareable URL
Perfect for product launches, documentation, portfolios, announcements, and global content distribution.
- π Rich Text Editor - BlockNote-based editor with full formatting, code syntax highlighting, and media embeds
- π Automatic Translation - Powered by Lingo.dev - content translates in real-time for visitors
- π Dynamic Forms - Create multi-step forms with various field types (text, select, email, URL, boolean)
- π Authentication - Secure JWT-based authentication with automatic login on registration
- π± Responsive Design - Beautiful UI that works seamlessly on all devices
- β‘ Cold Start Handling - Automatic retry logic for Vercel serverless functions
- π¨ Clean Design - Minimal, award-winning aesthetic with smooth animations
- ποΈ View Tracking - Automatic view count for your documents
- Next.js 15 - React framework with App Router
- TypeScript - Type-safe development
- Tailwind CSS - Utility-first styling
- Framer Motion - Smooth animations
- React Hook Form - Form management with Zod validation
- BlockNote - Rich text editing
- Shadcn/ui - Beautiful UI components
- Next.js Server Actions - Server-side logic
- PostgreSQL - Primary database
- Drizzle ORM - Type-safe database access
- bcrypt - Password hashing
- JWT - Token-based authentication
- Lingo.dev - Translation service
- Vercel - Deployment platform (optimized for cold starts)
- Git - Version control
Before you begin, ensure you have:
- Node.js 18+ installed
- PostgreSQL database (local or hosted)
- npm or yarn package manager
- Lingo.dev API key (for translation features)
git clone https://github.com/ShadowAdi/launchonce.git
cd launchoncenpm install
# or
yarn installCreate a .env file in the root directory:
# Database
DATABASE_URL="postgresql://username:password@localhost:5432/launchonce"
# JWT Secret (generate a secure random string)
JWT_SECRET="your-super-secret-jwt-key-change-this-in-production"
# Lingo.dev Translation API
LINGO_API_KEY="your-lingo-api-key"
LINGO_BASE_URL="https://api.lingo.dev"
# Optional: Node Environment
NODE_ENV="development"Run the database migrations:
npm run db:push
# or
npx drizzle-kit pushnpm run dev
# or
yarn devOpen http://localhost:3000 in your browser.
launchonce/
βββ actions/ # Server actions
β βββ document.action.ts
β βββ form.action.ts
β βββ translation.action.ts
β βββ user.action.ts
βββ app/ # Next.js App Router
β βββ (auth)/ # Auth pages (login, register)
β βββ (dashboard)/ # Protected dashboard routes
β βββ [slug]/ # Public document pages
β βββ layout.tsx # Root layout
β βββ page.tsx # Landing page
βββ components/ # React components
β βββ global/ # Shared components
β βββ ui/ # Shadcn UI components
βββ context/ # React context
β βββ AuthContext.tsx # Authentication state
βββ db/ # Database
β βββ db.ts # Database connection
β βββ schema.ts # Database schema
βββ lib/ # Utilities
β βββ retry-helper.ts # Cold start retry logic
β βββ utils.ts # Helper functions
β βββ validations/ # Zod schemas
βββ types/ # TypeScript types
- Users register with name, email, and password
- Password is hashed with bcrypt
- JWT token is generated automatically
- User is logged in and redirected to dashboard
- Token stored in localStorage via AuthContext
- Create document with title, subtitle, description
- Add rich content using BlockNote editor
- Optional cover image and tags
- Publish to get unique shareable URL
- Automatic view tracking
- Content stored in original language
- Visitor's language detected automatically
- Content translated via Lingo.dev API
- Cached for performance
- 50+ languages supported
- Attach forms to documents
- Multiple field types supported
- Conditional visibility options
- Response collection and management
- Public response listing (optional)
# Development
npm run dev # Start dev server
npm run build # Build for production
npm run start # Start production server
npm run lint # Run ESLint
# Database
npm run db:push # Push schema changes
npm run db:studio # Open Drizzle Studio
npm run db:generate # Generate migrations- Push your code to GitHub
- Import project in Vercel
- Add environment variables
- Deploy!
# Or use Vercel CLI
npm i -g vercel
vercelMake sure to set these in Vercel:
DATABASE_URL- Your PostgreSQL connection stringJWT_SECRET- Strong random secretLINGO_API_KEY- Your Lingo.dev API keyLINGO_BASE_URL- Lingo API URL
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Lingo.dev - Translation API
- Kombai - Design inspiration
- Shadcn/ui - UI components
- BlockNote - Rich text editor
GitHub: @ShadowAdi Repository: https://github.com/ShadowAdi/launchonce
Made with β€οΈ by ShadowAdi