Skip to content

aditya9515/postify

Repository files navigation

Postify

Postify is a Vite + React + Tailwind web app for cycle-based social posting. It collects work highlights from Codex webhook imports, optional GitHub activity, and manual entries; ranks them; generates LinkedIn draft variants; lets the user edit and approve; then creates server-side publish jobs for LinkedIn.

What Is Implemented

  • Tenity-inspired public landing page, Vite login page, and authenticated app shell.
  • Dashboard, connections, cycle creation, highlight review, draft editor, publish confirmation, history, and settings routes.
  • shadcn/ui source components plus 21st.dev registry components for the sign-in surface and folder visual.
  • Firebase-ready auth context with local demo fallback when VITE_FIREBASE_* values are missing.
  • Firebase Hosting, Firestore rules, Storage rules, and Functions scaffolding.
  • Cloud Functions for cycle creation, suggestions, draft generation, OAuth start/callbacks, Codex webhook intake, publish jobs, retries, disconnects, scheduled cycle checks, token refresh placeholder, GitHub sync placeholder, and OAuth cleanup.
  • Basic security defaults: user-owned Firestore rules, server-only token storage paths, OAuth state docs, HMAC webhook verification, AES-GCM token encryption helper, audit logs, and final posting consent.

Demo Video

Watch the live Postify demo

Local Development

npm install
npm run dev

The app runs without Firebase credentials in demo mode. Fill .env from .env.example when the Firebase web app is ready.

Verification

npm run build
npm run test
npm run --prefix functions build

Firebase Setup

  1. Create or select the Google Cloud/Firebase project named postify-498112.
  2. Enable Firebase Authentication, Firestore, Storage, Hosting, Cloud Functions, Cloud Scheduler, Secret Manager, and Vertex AI.
  3. Install the Firebase Trigger Email extension and configure SMTP credentials.
  4. Add Firebase web app values to .env. Keep VITE_PUBLIC_APP_URL=https://postify.adityakosuru.online and VITE_FIREBASE_AUTH_DOMAIN=postify.adityakosuru.online for production.
  5. Add Functions secrets/env values from functions/.env.example.
  6. Deploy with:
npm run build
firebase deploy

Social Platform Setup

  • LinkedIn: create a LinkedIn Developer app and request the permissions needed for profile posting, including w_member_social.
  • Instagram/Meta publishing is disabled for the public beta.
  • GitHub: create an OAuth app for repo activity imports.
  • Codex: configure a Codex Automation to generate cycle summaries and POST signed JSON to codexIntakeWebhook.

Real social publishing depends on valid platform credentials and account review. Without those, the frontend remains usable in demo mode and Functions return reauth/failure statuses rather than exposing secrets to the browser.

Primary Production URL

Use https://postify.adityakosuru.online as the primary public app URL.

Provider callbacks routed through Firebase Hosting:

Google/Firebase Auth: https://postify.adityakosuru.online/__/auth/handler
LinkedIn OAuth:       https://postify.adityakosuru.online/oauth/linkedin/callback
GitHub OAuth:         https://postify.adityakosuru.online/oauth/github/callback
Codex webhook:        https://postify.adityakosuru.online/codex/intake?bridgeId=...

The Hosting rewrites in firebase.json forward the OAuth and Codex paths to Cloud Functions, so users and provider dashboards can use the custom domain while backend code still runs securely in Functions.

About

Full-stack developer content workflow that turns Codex and GitHub activity into scored highlights and editable LinkedIn drafts using React, Firebase, and Gemini.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages