v1.3.0 — Self-Hosted & Privacy-First

Plan, Create & Publish
LinkedIn Content Effortlessly

A privacy-first content management system combining AI-powered writing, visual scheduling, and direct LinkedIn publishing — running entirely on your own server with zero third-party tracking.

Create Account Learn More
10
Database Tables
12
API Modules
16
Frontend Modules
0
External Trackers
Posts Unlimited
Core Features

A Complete LinkedIn Content Toolkit

From first draft to published post — every step of your content workflow in one place.

Content Management

Full-featured post editor with title, rich text (3,000 chars max), categories, and file attachments.

  • Status workflow: To Do → Scheduled → Published → Skipped
  • Image & video attachments with upload
  • Hashtag tagging from personal library
  • Category organization (Leadership, Tips, News…)

AI Content Generator

Generate posts with Google Gemini 2.5 Flash — full control over tone, length, audience, and language.

  • Tone: Professional, Casual, Inspirational, etc.
  • Length: Short / Medium / Long (100-500 words)
  • 2 variants per generation for comparison
  • Auto-suggested hashtags with relevance scores
  • 8 languages supported
  • Full generation history with reuse

Visual Scheduling

Three calendar views (month, week, day) for planning your content pipeline with precision.

  • Background scheduler polls every 60 seconds
  • Auto-publishes to LinkedIn on schedule
  • Drag-and-drop rescheduling on weekly board
  • Past-date detection warns before saving
  • Color-coded status indicators

LinkedIn Direct Publishing

OAuth 2.0 integration with LinkedIn's UGC Posts API for one-click or automated publishing.

  • Text, image, multi-image, video, article posts
  • Automatic token refresh (60-day tokens)
  • Media upload via LinkedIn asset API
  • Auto-publish toggle per account
  • Analytics: impressions, likes, comments, shares

Weekly Board (Kanban)

7-day kanban board for visualizing your pipeline with drag-and-drop scheduling.

  • Drag posts between days to reschedule
  • Unscheduled posts pool below board
  • Today highlighted, past days dimmed
  • Week navigation with stats summary

Notifications System

Real-time in-app notifications for every important event in your content lifecycle.

  • Success alerts on LinkedIn publish
  • Warning alerts when posts are skipped
  • Mark as read / dismiss individually
  • Unread badge counter in topbar

Hashtag Library

Curated hashtag collection organized by category for consistent branding.

  • Category grouping (Industry, Brand, Trending…)
  • Usage count tracking per hashtag
  • Quick-insert into posts with one click
  • AI-suggested hashtags auto-added

Links & Bookmarks

Save, organize, and bulk-import URLs for content research and references.

  • Title, URL, description, category per link
  • Bulk import from Excel (.xlsx) and CSV
  • Preview import before committing
  • Search and filter across all links

Notes & Ideas

Lightweight note-taking for content ideas, research, and brainstorming.

  • Pin important notes to the top
  • Full-text search across all notes
  • Quick capture for fleeting ideas
  • Convert notes to post drafts
Workflow

How It Works

From idea to published LinkedIn post in four steps.

Generate or Write

Use AI with your topic, tone, and audience — or write from scratch. Get 2 variants with hashtag suggestions.

Schedule

Pick a date and time using the calendar or weekly board. Drag-and-drop to reschedule anytime.

Auto-Publish

Background scheduler checks every 60s. When your post's time arrives, it's published to LinkedIn automatically.

Track & Iterate

Get notified on success or failure. Review analytics. Refine your strategy and repeat.

Security

Enterprise-Grade Protection

Defense-in-depth. Your data never leaves your server. Zero third-party analytics or tracking.

PBKDF2 Password Hashing

310,000 iterations · SHA-512 · 32-byte salt · crypto.timingSafeEqual prevents timing attacks.

HTTP-Only Secure Cookies

httpOnly + sameSite: strict + secure. Completely inaccessible to JavaScript or XSS attacks.

Helmet.js Security Headers

X-Frame-Options · X-Content-Type-Options · HSTS · Strict CSP · X-Powered-By removed.

Multi-Layer Rate Limiting

Global: 500 req/15min · Auth: 20/15min · Per-action in-memory limits with 10K entry cap.

Account Lockout

5 failed attempts → 15-minute lockout. Remaining attempts shown. Per-account tracking.

HMAC-Signed OAuth State

HMAC-SHA256 signed + timingSafeEqual verified. 10-minute expiry prevents CSRF/forgery.

CORS Origin Whitelist

Production domain only. Credentials restricted. Explicit method/header control.

Strict Input Validation

Password: 8-128 chars, mixed case + digit. Username: 3-30 chars. Email: RFC. Body: 2MB max.

File Upload Protection

Auth-only access. Directory traversal blocked. Dotfiles denied. Path resolution validated.

Safe Error Handling

No stack traces in production. Consistent JSON format. Forgot-password prevents enumeration.

Session Management

48-byte tokens (96 hex). Max 5/user. 24h expiry (30d remember). Last-seen tracking. Instant revoke.

Admin Controls & RBAC

Role-based (admin/user). Per-user page access. Signup/signin toggles. First user = admin.

Architecture

Clean, Layered Architecture

MVC pattern with clear separation of concerns. Each layer has a single responsibility.

Client — Browser SPA
16 vanilla JS modules · Client-side router · LocalStorage cache
app.jsrouter.jsapi.jscache.jsposts.jscalendar.jsweeklyBoard.jsai-generator.jsauth-client.jsnotifications.js
HTTPS / TLS
Nginx Reverse Proxy
SSL termination · Gzip · Static cache (30d)
SSL/TLSGzipStatic CacheProxy → :3000Buffering
localhost:3000
Express.js Application
Node.js 18+ · PM2 managed · 12 route modules
HelmetCORSRate LimiterMorganCookie ParserBody ParserAuth MWError Handler
Posts
Notes
Links
Hashtags
LinkedIn
AI Gen
Scheduler
Uploads
Notifs
Auth
mysql2 pool
MySQL / MariaDB
10 tables · Connection pooling · Auto-migration
userssessionspostshashtagslinksnotesnotificationslinkedin_tokensapp_settingsgeneration_history
Tech Stack

Battle-Tested Technologies

No bloated frameworks. Fast, reliable tools with active communities.

Node.js 18+Runtime
Express 4.xFramework
MySQL / MariaDBDatabase
Vanilla JavaScriptFrontend SPA
Google Gemini 2.5 FlashAI Engine
LinkedIn OAuth 2.0Integration
PM2Process Manager
NginxReverse Proxy
Helmet.jsSecurity Headers
Multer 2.xFile Uploads
PBKDF2 + SHA-512Password Hashing
CSS3 + RubikUI Styling
10
Database Tables
12
API Routes
16
Frontend Modules
7
Server Models
0
External Tracking
Deployment

Production-Ready in Minutes

Everything included to deploy on any Linux VPS. No Docker required.

PM2 Process Manager

ecosystem.config.js with memory limits, log rotation, auto-restart, and cluster mode for multi-core.

Nginx Configuration

Reverse proxy with SSL (Let's Encrypt), gzip, static cache (30d), and security headers.

Auto-Migration

Schema created on first run. Missing columns detected and added on every startup — zero manual SQL.

Environment Config

All secrets via .env (never committed). Template included. DB, API keys, OAuth — all configurable.