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.
116 improvements across 33 releases
- New
Cookie consent banner and opt-in analytics
Ubiqlu now asks before setting any analytics cookie. Google Analytics loads only after you accept, ad cookies are always off, and the privacy policy spells out exactly what happens either way.
- A cookie banner now appears on your first visit with equal Accept and Decline choices. Google Analytics loads only after you accept; declining or ignoring the banner keeps everything from Google off the page.
- Analytics runs with Google Consent Mode v2: ad storage, ad personalization, and ad user data are always denied, only anonymous usage measurement is ever enabled.
- A new Cookie settings link in the footer lets you change your choice anytime; withdrawing consent stops analytics immediately.
- The privacy policy has a new Cookies and analytics section covering the strictly necessary cookies, the opt-in analytics, and how to withdraw consent.
- New
Token expiry visibility and one-click renewal
Hover any connected account to see exactly when its access token expires, and renew it on the spot. Ubiqlu already renews tokens automatically in the background; this adds visibility and an on-demand control.
- Hovering a connected account now opens a detail card with the account name, connection status, and token expiry: how long until it expires plus the exact date and time. Tokens that never expire say so.
- Instagram and LinkedIn company accounts get a renew button in the card that refreshes the token immediately, with clear success and failure feedback. Manual renewals are rate limited to protect platform quotas.
- LinkedIn personal profiles, whose tokens cannot be renewed in the background, get a one-click reconnect control in the same card.
- Improved
Custom use cases route to Binary Code Barn
The Enterprise contact-sales email is gone. The home page now has a standout section for custom work: automations, integrations, products, and MVPs built by Binary Code Barn, our parent company.
- A new section on the home page invites custom work: if you need a custom automation, a bespoke integration, or a product or MVP built, reach out to Binary Code Barn and we develop it with you.
- The reach-out button on the home page and the connect screen at the 100-account cap now link to the Binary Code Barn pricing page instead of opening an email draft.
- New
Imprint page, company details, and search engine readiness
A new imprint page names Binary Code Barn UG as the company behind Ubiqlu, the terms and privacy policy state who processes payments and issues invoices, and the site now ships a sitemap, robots rules, and rich link previews for search engines and social shares.
- A new imprint page at /imprint lists the legal details of Binary Code Barn UG (haftungsbeschraenkt), the company behind Ubiqlu, and is linked from the footer.
- The terms of service and privacy policy now state that Ubiqlu is a Binary Code Barn product and that all payments are processed and invoices issued by Binary Code Barn UG through Stripe.
- Sharing a Ubiqlu link on social platforms now shows a branded preview card with the page title and description.
- The site now publishes a sitemap and robots rules so search engines index the public pages while the dashboard, workspaces, and sign-in pages stay out of search results.
- Improved
Privacy policy now covers media storage and Facebook
The privacy policy now discloses Cloudflare R2 media storage and covers Facebook account tokens and data deletion alongside Instagram.
- The privacy policy now lists Cloudflare R2 as the storage service for uploaded images and videos.
- Facebook is now covered in the privacy policy: connected Facebook tokens, and data deletion when you disconnect or remove the app from your Meta permissions.
- Fixed
Publishing unstuck, uploads fixed, sharper images on social
Posts that sat on a publishing status forever now go out, uploading media from ubiqlu.com works again, and images are optimized before publishing so Instagram and Facebook stop crushing their quality.
- Fixed a bug where publishing a post got stuck on the publishing status and never reached the platform. The publish pipeline failed to start behind the scenes; posts now publish and scheduled posts fire on time, and automatic token renewals run again.
- A new watchdog now sweeps the publish pipeline on a daily schedule. A post can no longer sit on publishing forever: interrupted publishes are re-dispatched automatically, and unrecoverable ones are marked failed with a retry option instead of hanging silently.
- Failed posts now explain what went wrong in plain language, like the account needing to be reconnected, the platform rate limit being hit, or the platform rejecting the content, with the raw provider response available underneath for troubleshooting.
- Fixed a bug where attaching an image or video in the composer failed with an upload error after the move to ubiqlu.com. Uploads from the production domain now go through.
- Large photos are now resized and re-encoded at high quality before upload, so Instagram and Facebook no longer apply their own heavy compression and published images stay sharp.
- Photos that were previously rejected for being over the size limit are now optimized to fit automatically instead of failing.
- Improved
Ubiqlu is live on ubiqlu.com
Ubiqlu now runs on its own domain, ubiqlu.com, and the landing page was rebuilt around what ships today: the workspace, publish status tracking, the agent-ready API, and plain pricing terms.
- Ubiqlu moved to ubiqlu.com. Sign-in, billing, API calls, and social account connections all run on the production domain, and Google sign-in is available.
- The home page now shows the product itself: rendered previews of the composer, per-account publish status with retry, and the connected accounts view.
- A new API section on the home page explains how to hand a workspace API key to ChatGPT, Claude, or a script so it can schedule and publish posts, with a request example against the live API.
- Pricing now spells out how the trial works, what counts as a connected account, and each plan cap, so there is no guesswork before checkout.
- New
API access included in every plan
API access is no longer a paid add-on. Every workspace plan now includes full API access at no extra charge, and connected account tokens now renew themselves automatically.
- Full API access is now included in Starter and Pro. Any workspace with an active plan or trial can create API keys and call the Ubiqlu API without turning anything on or paying extra.
- The $5 per month API access charge is gone. Billing shows API access as included, and the monthly total is just your plan price.
- Instagram account tokens now refresh themselves automatically about a day before they expire, so connected accounts keep publishing without manual reconnects.
- LinkedIn company page tokens also renew automatically, and when several company pages share one authorizing admin the renewed token is applied to all of them at once.
- If an automatic renewal ever fails, the account is flagged for attention in the dashboard with a clear reconnect prompt instead of failing silently at publish time.
- New
Invite teammates to your workspace
You can now invite teammates to a workspace from Settings, see who has joined, and manage pending invitations in one place.
- A new Members page under workspace Settings lets admins invite teammates by email, with a seat meter that shows how many of the workspace's 10 seats are in use.
- Choose whether each invite goes out as an Admin or a Member, and see the role on every pending invitation so you know exactly what access you are granting.
- A seat is held the moment you invite someone, so members and pending invitations count together toward the 10-seat limit. Inviting is blocked at capacity until you remove a member or cancel a pending invitation.
- Invited people receive an email to join, and you can revoke a pending invitation or remove a member at any time.
- The workspace owner cannot be removed and you cannot remove yourself, so every workspace keeps an admin.
- Members is now a dedicated item under Settings in the workspace sidebar, so you can reach it in one click.
- New
Publish videos to LinkedIn
You can now attach a video to a LinkedIn post and publish it to your personal profile or a company page, on the same schedule as your other accounts.
- LinkedIn posts now accept a video. The composer no longer blocks video for LinkedIn personal profiles or company pages.
- Videos upload to LinkedIn in the background and publish once LinkedIn finishes processing them.
- Fixed
Publishing to LinkedIn company pages now works in the composer
Connected LinkedIn company pages are now selectable in the composer, so text and image posts publish to them on the same schedule as your other accounts.
- LinkedIn company pages no longer show as unsupported in the composer. Text and single image posts publish to them through the same pipeline as your personal LinkedIn and Instagram accounts.
- New
Connect LinkedIn company pages and publish to them
Link a LinkedIn company page you administer to a workspace and publish text and image posts to it on the same schedule as your other accounts.
- Connecting LinkedIn Company signs you in, lists the company pages you administer, and lets you pick the one to connect to the workspace.
- Text and single image posts publish to your LinkedIn company page through the same composer and scheduling pipeline as your other accounts.
- The connection records which LinkedIn admin authorized it, so company and personal LinkedIn accounts stay linked for upcoming token upkeep.
- 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.