Basalt LogoBasalthelp
Getting Started
Projects
Tasks
Files
Team & Roles
Client Portal
Integrations
MCP
AI Features
Settings & Billing
Resources
Changelog
HelpClient Portal

Client Portal

Branded client portal: video approval, team chat, project requests, and progress tracking.

Portal Overview

What is the Client Portal?

The Client Portal is a separate branded interface, isolated from your workspace. Clients see only their assigned projects and videos, communicate with your team via built-in chat, and approve deliverables — without access to your studio's internal data.

The portal runs on a separate domain or subdomain for your studio and uses its own authentication system, independent of Basalt accounts.

Key Features

  • Dashboard — project stats, Gantt chart, upcoming deadlines, and videos pending approval
  • Projects & Videos — view assigned projects, video cards with thumbnails from S3, Yandex Disk, and Google Drive
  • Approval — approve videos or request revisions with comments, approval progress bar
  • Chat — real-time messaging with your team per project
  • Requests — submit new project requests, discuss details, track status
  • Notifications — Telegram notifications for new videos, status changes, and deadlines
  • Multi-Studio — one client can work with multiple studios through a single account

"Digital Noir" Design

The portal features a unique dark theme called "Digital Noir" — pure black background, glassmorphism effects, violet accents, and animations. Visually, the portal is entirely distinct from the main Basalt interface.

Studios on branding-enabled plans can customize the primary and accent colors, upload a logo, and set a studio name — clients will see your brand instead of Basalt.

Setup & Branding

Creating Clients

Clients are created in Studio → Clients. When creating a client, specify:

  • Name — the client's display name
  • Telegram ID or Email — depending on the authentication method configured for your studio
  • Phone (optional) — for contact information

Each client receives a unique identifier (UUID) that can be used to generate a personalized login link.

You can also create a client automatically from a contact template — all projects linked to that contact are assigned immediately.

Assigning Projects

Clients only see projects that are assigned to them. Assignment and removal are available on the client's page:

  1. Go to Studio → Clients
  2. Select a client
  3. Click Assign Project and choose from the list

A single project can be assigned to multiple clients. The client will see the project in the portal immediately after assignment.

Sending Videos for Review

For a client to see a video in the portal, it must be explicitly sent for review:

  1. Open the project in the main interface
  2. Go to the project's files
  3. Select a video file and click Send for Review

This automatically creates a public viewing link and an approval record. If the client has Telegram connected, they will receive a notification about the new video.

Custom Branding

On plans with branding support (has_portal_branding), you can customize the portal's appearance:

SettingDescription
Primary ColorApplied to buttons, links, and accent elements throughout the portal
Accent ColorSecondary color for supplementary elements
Studio NameDisplayed in the portal header instead of "Basalt"
LogoShown in the header and on the login page

On white-label plans, the "Powered by Basalt" attribution is also hidden — clients see only your brand.

Subdomains

Each studio can use its own subdomain for the portal:

  • mystudio.basaltpms.com — the subdomain automatically routes to your studio's portal
  • Clients don't need to select a studio — they land directly in the right place

The subdomain is determined by your company slug. Configure it in Settings → Company → Slug.

Client Login

Authentication Methods

The portal supports four login methods. Each studio selects one primary method in settings.

MethodHow It WorksWhen to Use
Personal LinkUnique URL with client UUID — one-click loginMinimal friction: send the link in a messenger and the client enters the portal instantly
TelegramTelegram Login Widget or bot verificationClients already communicate with you via Telegram
EmailMagic link or 8-digit OTP code sent to emailFormal clients who prefer email
Hub LoginTelegram or Email on the root domain, not tied to a studioClients working with multiple studios

Personal Link

The simplest login method. Each client has a unique UUID. Generate a link like:

https://yourcompany.basaltpms.com/portal/login?client=UUID

When the client visits the link, they are authenticated instantly without additional steps. The link can be sent via any messenger or email. Access is protected by rate limiting — 5 attempts per minute per IP.

Telegram Login

Two Telegram authentication options:

Telegram Login Widget — a "Login with Telegram" button on the login page. The client confirms authorization in Telegram, the server verifies the HMAC signature and finds the client by Telegram ID.

Bot Verification — the client receives a deep-link to the Telegram bot and taps "Start" — the bot confirms their identity. The code is valid for 10 minutes. The portal checks the status every few seconds and completes login automatically.

Email Login

The client enters their email on the login page. They receive:

  • Magic link — a clickable link for one-click login (valid for 10 minutes)
  • OTP code — an 8-digit code that can be entered manually on the login page

Both options work simultaneously — the client uses whichever is more convenient. Request rate is limited to prevent spam.

Session Security

The portal uses its own JWT token system, separate from Basalt accounts:

  • Session token — httpOnly cookie, valid for 2 hours, bound to the client and studio
  • Refresh token — automatically renews the session for up to 7 days
  • Reuse detection — if a revoked refresh token is replayed, all sessions for that account are immediately invalidated

Client personal data (name, email, Telegram ID, phone) is stored encrypted using envelope encryption.

Dashboard & Projects

Home Page

After logging in, the client lands on a dashboard with a personalized greeting and an overview of all assigned projects.

Stat Cards:

  • Pending Approval — number of videos awaiting a decision
  • In Progress — projects in active status
  • Total Projects — total number of assigned projects
  • Approved — number of approved videos

Quick Actions — links to the Requests and Projects sections for fast navigation.

Gantt Chart

The dashboard displays an interactive Gantt chart with all assigned projects. Features include:

  • Zoom: toggle between weekly and monthly views
  • Horizontal scrolling along the timeline
  • Color coding by project status
  • Deadline markers
  • Hover tooltips with approval statistics

Bento Grid

Below the stats, a bento grid displays two cards:

  • Upcoming Deadlines — projects sorted by urgency
  • Pending Videos — the latest videos awaiting the client's decision

Project List

The Projects section shows all assigned projects, split into two groups:

  • In Progress — active projects (at the top)
  • Other Projects — completed and archived, sorted by deadline

Each project shows its name, status badge, and deadline. The header displays the total project count and number of active ones.

Project Page

Clicking a project opens a detail page with:

  • Project Card — name, status, description, deadline
  • Timeline Bar — visual progress bar from creation date to deadline
  • Approval Progress — segmented bar: approved / revision / pending
  • Video Filters — tabs: All, Pending, Approved, Revision
  • Video Grid — masonry layout of video cards
  • Chat — sidebar panel (desktop) or floating button (mobile)
  • Activity Feed — chronological timeline of project events

Review & Approval

Video Cards

Each video sent for review is displayed as a card in a masonry grid. The card includes:

  • Thumbnail — preview from S3, Yandex Disk, or Google Drive (or a placeholder if unavailable)
  • File name and size
  • Play button — opens the video via a public link in a new tab
  • Status badge — top-right corner: pending, approved, or revision

Approving Videos

For videos with "Pending" status, two buttons are available:

  • Approve (green checkmark) — the video receives "Approved" status with the approval date
  • Request Revision (X mark) — opens a modal for entering revision notes

After approval or revision request, the card badge updates instantly. The studio team sees the result in their interface.

Requesting Revisions

When requesting a revision, a modal window opens where the client describes what needs to be changed. The revision notes are displayed on the video card — the team can see them in the project's approval section.

The studio can rework the video and send it for review again — the card will return to "Pending" status.

Approval Progress Bar

The project page displays a segmented progress bar showing the state of all videos:

  • Green — approved videos
  • Yellow — under revision
  • Gray — awaiting decision

The bar fills with animation, giving the client a clear visual sense of project progress.

Activity Feed

The project sidebar displays a chronological event feed:

  • sent_for_review — video sent for review
  • video_approved — video approved by the client
  • revision_requested — client requested revisions

The dashboard also features a global feed of the latest 15 events across all projects.

Chat & Requests

Team Chat

Each project has its own chat for communication between the client and the studio team. Chat works in real time via Supabase Realtime.

Interface:

  • On desktop — collapsible sidebar panel
  • On mobile — floating action button (FAB) with unread badge

Chat Features

  • Send and receive messages in real time
  • Edit your own messages (hover on desktop, long-press on mobile)
  • Delete your own messages
  • Date separators (Today / Yesterday / date)
  • Auto-scroll to new messages
  • Messages marked as read when panel opens
  • Unread counter — updates every 30 seconds and on window focus

Project Requests

Clients can submit requests for new projects via the Requests section in the portal. When creating a request, they specify:

  • Project title and description
  • Desired deadline
  • Number of videos
  • Budget (optional)
  • Reference links (optional)

Request Statuses

Each request goes through the following statuses:

StatusDescription
PendingRequest submitted, awaiting review
In ReviewStudio has taken the request into consideration
ApprovedStudio accepted the request
RejectedRequest declined with a reason provided
ConvertedRequest has been turned into an actual project

Clients can filter requests by status. Each request page includes a comment thread for discussing details with the studio.

Request Detail Page

The request detail page shows all information: title, description, status, priority, deadline, video count, budget, and reference links. Additionally:

  • Reviewer name and review date (if processed)
  • Rejection reason (if declined)
  • Link to the project (if converted)
  • Comment thread for back-and-forth discussion between client and studio

Client Settings

Email

Clients can add or change their email address in the portal settings. Email is used for:

  • Login via magic link / OTP
  • Receiving notifications
  • Identification when working with multiple studios

Email uniqueness is verified within the studio when added.

Linking Telegram

In settings, clients can link or unlink their Telegram account. Linking works via the Telegram bot:

  1. Client clicks Link Telegram
  2. A deep-link to the Telegram bot is generated
  3. Client opens the link and taps "Start" in the bot
  4. The portal automatically checks the status every 3 seconds
  5. After confirmation, Telegram is linked to the account

Telegram can only be unlinked if the client has an email set — at least one login method must remain.

Notifications

Notifications require a connected Telegram account. Available notification types:

TypeDescription
Video for ReviewStudio sent a video for approval
Project Status ChangeProject status has changed
Deadline ReminderA project deadline is approaching

Each type can be toggled individually. All notifications are enabled by default. A Send Test Notification button lets you verify everything works.

Multi-Studio

If a client works with multiple studios on Basalt, they receive a unified account (Portal Account) that links all their client records.

How it works:

  • When logging in via the root domain (no subdomain), the system finds all of the client's studios
  • If there's only one studio — the client enters it automatically
  • If there are multiple studios — the Hub page opens, showing a studio selector
  • On the Hub page, each studio is displayed as a card with its logo, name, color, and project count
  • The client can switch between studios via Settings → Switch Studio
Previous
Team & Roles
Next
Integrations