塑造个人品牌,发现细分市场,构建可持续盈利的产品
I share how to build a personal brand, discover niche markets, and create sustainably profitable products. I also share everything about AI.
AI translation
Content management for social media personas
Translation pending
MarketingTypeScript · JavaScriptGitHub @LeonHuschkaOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Self-hosted content management webapp for scheduling social media content across AI-generated personas.
• Framework: Next.js 14 (App Router, TypeScript)
• Styling: Tailwind CSS + shadcn/ui
• Backend: Supabase (Postgres, Auth, Storage)
• Forms: react-hook-form + zod
• Bun or Node.js 18+
• Supabase CLI
This outputs your local Supabase URL and anon key.
Edit .env.local with your Supabase URL and anon key from step 2.
This applies all migrations in supabase/migrations/ and runs supabase/seed.sql.
Visit http://localhost:3000.
6. Promote your first real user to ownerRead the full README ↗Self-hosted content management webapp for scheduling social media content across AI-generated personas.
cd content-hub
bun install
supabase start
This outputs your local Supabase URL and anon key.
cp .env.local.example .env.local
Edit .env.local with your Supabase URL and anon key from step 2.
supabase db reset
This applies all migrations in supabase/migrations/ and runs supabase/seed.sql.
Demo credentials: [email protected] / password123
bun run dev
Visit http://localhost:3000.
After signing up via the UI, run in the Supabase SQL Editor:
UPDATE public.user_profiles SET global_role = 'owner' WHERE id = '<your-user-id>';
NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY as environment variablesuser_profiles.global_role)persona_members.role)Row Level Security (RLS) on every table. Helper functions is_owner(), is_persona_member(), and get_persona_role() run as security definer to avoid recursive RLS. The persona switcher stores the active persona ID in a cookie, and all queries are scoped to that persona.
src/
├── app/
│ ├── (auth)/ # Login, signup, email confirmation
│ ├── (app)/ # Protected app (dashboard, settings)
│ └── layout.tsx # Root layout with font + toaster
├── components/
│ ├── ui/ # shadcn/ui components
│ ├── auth/ # Login/signup forms
│ ├── layout/ # Sidebar, top bar, persona switcher
│ └── personas/ # Persona settings, members, dialogs
├── hooks/ # React context (persona provider)
├── lib/
│ ├── supabase/ # Client factories (browser, server, middleware)
│ ├── types/ # Database types
│ ├── validations/ # Zod schemas
│ ├── constants.ts # Shared constants
│ └── utils.ts # Utility functions
└── middleware.ts # Auth middleware
supabase/
├── migrations/ # SQL migrations (applied in order)
└── seed.sql # Demo data