A modern AI-powered tool to generate social media posts using smart presets, reusable prompts, and a streamlined interface.
Live Demo: https://airlume.vercel.app/
- AI Content Generation: Generate high-quality social media posts using OpenAI GPT models.
- Smart Presets & Prompts: Modular, reusable prompts for different content types and platforms.
- User Dashboard: Manage drafts, scheduled posts, and media assets in a streamlined interface.
- Social Integrations: Connect and publish directly to Twitter/X and Bluesky.
- Media Library: Store and manage images for your posts.
- CRON Jobs: Schedule posts to publish at specific times with trigger.dev.
- Modern UI: Built with Next.js App Router, Tailwind CSS v4, and Shadcn/UI for a beautiful, responsive experience.
Authentication and user management are handled by Clerk.dev:
- Sign Up & Sign In: Secure, customizable authentication flows.
- Session Management: Persistent sessions across devices.
- User Profiles: Users can update their profile, email, password, and manage social connections via Clerk's UI.
- Social Logins: Easily connect Twitter/X and Bluesky accounts for seamless publishing.
- Protected Routes: All user-specific pages (dashboard, generator, media library, etc.) are protected using Clerk middleware.
- API Security: All API routes validate the user via Clerk before performing actions.
Example:
import { ClerkProvider } from "@clerk/nextjs"
export default function RootLayout({ children }) {
return (
<ClerkProvider>
{/* ... */}
{children}
</ClerkProvider>
)
}- Frontend: Next.js (App Router), Tailwind CSS v4, Shadcn/UI
- Backend: Supabase (Edge Functions)
- Authentication: Clerk.dev
- AI Integration: OpenAI GPT models via Vercel AI SDK
- CRON Jobs: Trigger.dev
- Package Manager: pnpm
/
├── public/
│ ├── images/
│ │ └── bg-stripe.png
│ └── opengraph-image.jpg
├── src/
│ ├── app/
│ │ ├── [username]/
│ │ │ ├── generator/
│ │ │ ├── media-library/
│ │ │ ├── posts/
│ │ │ ├── settings/
│ │ │ ├── layout.tsx
│ │ │ └── page.tsx
│ │ ├── api/
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ ├── page.tsx
│ │ ├── robots.ts
│ │ └── sitemap.ts
│ ├── assets/
│ │ └── images/
│ ├── components/
│ │ ├── landing/
│ │ ├── icons/
│ │ ├── ui/
│ │ ├── app-sidebar.tsx
│ │ ├── copyright.tsx
│ │ ├── dashboard-greeting.tsx
│ │ ├── dashboard-header-gradient.tsx
│ │ ├── logo.tsx
│ │ ├── nav-generations.tsx
│ │ ├── nav-main.tsx
│ │ ├── nav-user.tsx
│ │ ├── site-header.tsx
│ │ ├── theme-switcher.tsx
│ │ └── user-profile-dialog.tsx
│ ├── hooks/
│ │ └── use-mobile.ts
│ ├── lib/
│ │ ├── database.types.ts
│ │ ├── supabaseAdmin.ts
│ │ ├── supabaseClient.ts
│ │ └── utils.ts
│ ├── trigger/
│ │ ├── scheduledPost.ts
│ │ └── .gitkeep
│ ├── middleware.ts
│ └── trigger.ts
├── README.md
└── package.json
- Install dependencies:
pnpm install - Run dev server:
pnpm dev - Build:
pnpm build - Lint:
pnpm lint
Business Source License (see LICENSE file for details)





