What we are building
A running log of everything shipped while building Ubiqlu, a focused workspace for creators and brands to compose, schedule, and publish to social without noise.
74 improvements across 21 releases
- New
Added a Terms of Service page
A plain-language Terms of Service page now sits alongside the Privacy Policy, covering your account, content, billing, and fair use.
- The new Terms of Service page explains the rules for using Ubiqlu in clear, compact wording.
- A Terms of Service link now appears in the footer next to the Privacy Policy.
- New
Connect Facebook pages and publish to them
Link the Facebook pages you manage to a workspace in one step and publish text, image, and video posts to them on the same schedule as your other accounts.
- Connecting Facebook walks through a single sign-in, then lets you pick one or many of the pages you manage and connect them all at once.
- Text, single image, and single video posts publish to your Facebook pages through the same composer and scheduling pipeline as Instagram and LinkedIn.
- The composer preview now shows Facebook-specific tips and the point where long captions get truncated, so you can see how a post will read before it goes out.
- If you remove Ubiqlu from your Facebook account, every page you connected is disconnected and its stored access is wiped automatically.
- Fixed
Fixed: publishing a post no longer triggers a rate limit error
A misconfigured rate limiter was firing on every page load and link prefetch, exhausting Redis quota and producing false rate limit errors during normal use.
- Publishing, bulk saving, connecting a social account, and retrying a failed publish now each have their own dedicated rate limit. All other navigation costs zero Redis commands.
- The rate limit error you hit when going to publish a post is now gone. The limiter only trips if you genuinely fire the same operation dozens of times in a single minute.
- All rate limit thresholds and window sizes live in one place in the codebase, so they can be tuned in a single edit without touching multiple files.
- Improved
A warmer look that stays easy to read
Ubiqlu moved to a warm studio palette across light and dark mode, tuned so text, buttons, and status colors stay clearly legible everywhere.
- Every page picked up a warm cream and ink palette with orange, brown, and coral accents, replacing the old neutral gray theme in both light and dark mode.
- Color pairings were checked against WCAG contrast guidelines, so body text and primary buttons stay comfortably readable on every surface.
- Status colors now read at a glance: orange for warnings and focus, coral for destructive actions, and a warmer success green that fits the new palette.
- Chart colors were retuned so multiple data series stay distinct from each other in both light and dark mode.
- New
Drafts, bulk creation, and draft editing
Save posts as drafts, create many at once from a CSV or text import, and come back to edit any draft before it goes live.
- A dedicated drafts page lists every saved draft in the workspace, so nothing in progress gets lost in the calendar.
- Bulk post creation lets you import a batch of posts from CSV or plain text, assign accounts, and auto-schedule them across future time slots in one action.
- Any draft can be opened back in the composer for editing, rescheduling, or publishing, picking up exactly where you left off including media.
- Drafts can be selected in bulk and deleted in one action when a batch is no longer needed.
- Improved
A clearer, calmer way to turn on API access
Turning on API access now reads as one simple switch on your plan, with the price and exactly what you will be charged shown before anything happens.
- API access is now a single clear on or off state with one action, instead of a stack of separate billing flags to decode.
- Turning API access on opens a confirmation that shows the prorated charge and your new combined monthly total before you commit, so a mid-cycle charge is never a surprise.
- Turning API access off now keeps it on through the rest of the cycle you already paid for, then stops it renewing, with nothing charged today and no awkward mid-cycle credit.
- If you turn API access off and change your mind before the period ends, turning it back on is free because that cycle is already paid for.
- Your billing summary now lists API access as a line item with the combined monthly total, so the full cost of your plan is visible at a glance.
- You can turn API access on right from the API Keys page, not just billing, so the page where you make keys can also unlock them.
- API key permissions now read in plain language, like Create and publish posts or Upload media, instead of raw scope codes.
- New
API rate limits and per-key usage insight
The public API now protects itself with per-key rate limits and shows exactly how each key is being used, so abuse is contained and usage is never a mystery.
- Every API key is rate limited on a rolling window, and requests that exceed it get a clear 429 with standard RateLimit headers so clients can back off gracefully.
- The whole platform now sits behind a baseline request limit, blunting broad abuse and scraping before it reaches a workspace.
- The API Keys page shows when each key was last used and how many requests it made in the last 30 days, making usage observable at a glance.
- API errors now name the exact problem, distinguishing inactive billing, an inactive API add-on, a missing scope, and no access to the requested workspace.
- New
Create and publish posts straight from the API
Agents and external tools can now compose, publish, and recover posts programmatically, turning the public API into a full posting surface.
- A new endpoint lists the workspace a key unlocks, so an agent can discover its workspace id, name, and timezone from the key alone.
- External tools can read every connected account in a workspace, including live health and token-expiry state, before composing a post.
- Posts can be created over REST as a draft, scheduled for later, or published now, with the same validation and durable fan-out the dashboard uses.
- A single post and its per-account publish status can be fetched by id to track delivery and surface failures.
- Failed publish targets can be retried through the API, re-dispatching the durable pipeline without any risk of double-publishing.
- The full public API is now documented end to end, covering workspace discovery, accounts, media, post creation, scheduling, status, and retry with copy-paste request and response examples.
- The documentation page gained an interactive, searchable API reference with a built-in request console, so developers can explore and try every endpoint in the browser.
- New
Catch broken connections before they cost you a post
Every connected account now shows its health in real time, so a silent expired token never turns into a missed launch.
- A live health indicator sits on every connected account: green when healthy, amber when a token is about to expire, and red when it has already failed, with no surprises mid-campaign.
- Any account that needs attention offers one-click Reconnect in place, restoring access without re-linking from scratch or losing its publish history.
- New
A public API that turns Ubiqlu into a platform
Scoped, secure programmatic access lets agents and tools build on top of every workspace, opening Ubiqlu to integrations and automation.
- Admins create and revoke scoped API keys from workspace settings, and the raw secret is shown once and never stored in plaintext.
- Every request authenticates with a workspace-scoped key, carries explicit read and write scopes, and is checked against active billing and the API add-on entitlement.
- The API ships as a paid add-on, with entitlement reflected across billing and key management before a single key is issued, a clean expansion-revenue lever.
- Full public API documentation covers authentication, scopes, media uploads, and safe agent usage out of the box.
- External tools and AI agents can upload media and request pre-signed upload URLs directly through REST.
- New
See your whole content pipeline in one view
A calendar and list view bring every post into focus, accounts are managed inline, and failures are diagnosable and recoverable in a click.
- A content calendar and list view unify drafts, scheduled, and published posts in a single overview beside the workspace sidebar.
- Account management moved inline on the connect page, with one-tap disconnect and clearer platform display.
- Billing and subscription management were expanded, with a dedicated Enterprise path for workspaces that outgrow self-serve.
- When a post fails, the dashboard names the exact accounts that failed, the provider error, and the raw response on demand, so debugging never means log-diving.
- Failed targets retry in one click through the durable pipeline, and an in-flight target can never be double-published.
- New
Publish to Instagram and LinkedIn in one action
Compose once, ship everywhere. Each platform runs independently, so one provider failing never blocks the rest.
- A single compose action fans out to Instagram and LinkedIn, with each target running through its own durable publish pipeline.
- Instagram image and video publishing is live: the pipeline builds a media container, waits for Meta to finish processing, and publishes with automatic retries when a container is not yet ready.
- Publishing was rebuilt on batched database operations for faster, more reliable workflows at scale.
- Fixed
Instagram connections that just work
Hardened the Instagram login and token flow so Business and Creator accounts connect cleanly the first time, every time.
- Modern IGA-format tokens from 2024+ Business Login are fully supported, and profile fetches fall back gracefully so accounts always connect with a recognisable name.
- Token exchange, scope normalisation, and container polling were reworked to match Meta’s current API, eliminating intermittent connection failures.
- Media publishing now polls with longer, more patient intervals so larger videos finish processing before publish.
- Improved
Faster media, clearer limits, full data control
Media moved onto a global CDN, plan limits became explicit, and users gained on-demand data deletion.
- Post media now lives on Cloudflare R2 and is served from the CDN, and binary files never touch the database.
- Connecting an account beyond your plan’s limit surfaces a clear upgrade prompt instead of failing silently, a natural and well-timed upsell.
- A dedicated data deletion page and API let users remove an Instagram account and its data on request, meeting platform and privacy expectations.
- The composer validates text-post support per platform before you publish.
- New
The core loop: connect, compose, publish
The end-to-end publishing experience came together, the heart of the product.
- A connect-accounts page links social profiles through OAuth, with every credential scoped to its workspace.
- Post creation arrived with a composer and LinkedIn publishing support.
- The workspace dashboard surfaces live account and post counts, with billing built in.
- New
Ubiqlu goes public
Launched the public site and the first social integrations.
- The product home page went live with clear positioning, a privacy policy, and a direct path to sign-up.
- Instagram and LinkedIn account connections landed, with every credential encrypted and scoped to its workspace.
- New
Per-workspace billing built on Stripe
Subscriptions, trials, and plan changes run through Stripe and stay in sync automatically, billing infrastructure that scales without manual work.
- Admins subscribe to Starter or Pro through Stripe Checkout, with a 14-day free trial and a card required upfront.
- Each workspace is billed independently: switch plans, update payment methods, view invoices, and cancel through the Stripe Customer Portal.
- Signed webhooks keep subscription state in lockstep with Stripe, so plan changes, renewals, and cancellations reflect instantly with zero intervention.
- Improved
Pricing you can read before you sign up
Published clear, honest pricing on the landing page.
- A pricing section on the homepage makes every plan and what it includes obvious before sign-up, with no surprises and less churn.
- New
Multi-tenant workspaces, secure by construction
Workspaces with membership, roles, and isolation guarantees baked into the architecture, not bolted on.
- Workspaces are backed by Clerk organizations with role-based membership and a structural guarantee that no user can reach another workspace’s data.
- Every workspace route verifies membership at the layout layer, and all mutations are admin-only and enforced server-side.
- Workspaces capture a name, timezone, and brand summary, the foundation for timezone-aware scheduling and on-brand content, and can be soft-deleted at any time.
- Improved
Auth, theming, and a real design system
The foundations a polished, trustworthy product is built on.
- Secure sign-in through Clerk, with no passwords or sensitive credentials ever stored in our database.
- Light and dark mode work across every page with no flicker, powered by semantic color tokens that adapt automatically.
- A reusable design system shipped, and the full V1 data model was defined and migrated through a reviewed, versioned process.
- New
Day one
Ubiqlu began with a modern Next.js stack and a clear product vision from the very first commit.
- Initialised the project and documented the V1 product decisions, architecture, integrations, and tech stack up front.
- Stood up a type-safe PostgreSQL database on Neon, queried through Drizzle, with every query workspace-scoped by construction.
More on the way. Ubiqlu ships continuously.