Senior Full-Stack Engineer

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Part Time

WAGE / SALARY

Please let us know your desired salary

HOURS PER WEEK

20

DATE UPDATED

Mar 27, 2026

JOB OVERVIEW

- About BaseOne
BaseOne is a data and AI-driven solutions company based in London, United Kingdom. We build design-led, data-driven products — from enterprise analytics platforms and AI automation tools to consumer-facing health and fitness apps.

Our product portfolio includes:
AI-powered consumer platforms — subscription apps combining personalised AI experiences with commerce

B2B SaaS products — coaching and client management tools for professionals

Enterprise data & analytics — dashboards, data integration, and predictive analytics for large organisations

AI & automation — conversational AI, agentic workflows, and intelligent process automation

Primer Accelerator — our pre-built data platform for PMO and project controls

We're a small, high-output team that blends strategy, design, and engineering in-house. We ship real products, not decks.

- The Role
We're looking for a senior full-stack engineer to work across multiple products and codebases. You'll ship features end-to-end — web, mobile, API, database, AI integrations — and move between projects as priorities shift.

You'll work directly with our founder, own meaningful chunks of each product, and have real influence over technical decisions.

AI-assisted development (Claude Code, agentic workflows) is a core part of how we build.

This is a hands-on, high-autonomy role. You'll need to context-switch, pick things up fast, and deliver without hand-holding.

- What You'll Work On
Consumer app features — AI-powered personalisation, content generation, tracking, social/gamification

SaaS platform — dashboards, client management, plan assignment, messaging, check-ins

AI integrations — LLM-powered features, prompt engineering, streaming, function calling (OpenAI + Anthropic)

Commerce & affiliate systems — product catalogues, recommendations, click tracking

Data & analytics products — dashboards, data visualisation, real-time reporting

Mobile apps — React Native / Expo with web feature parity

Platform quality — accessibility, security, compliance, performance

The mix will shift depending on what's shipping. Flexibility matters more than specialism.

- Tech Stack
Frontend: Next.js, React, React Native (Expo), TailwindCSS

Backend: Node.js, PostgreSQL, Supabase, REST APIs

AI: OpenAI + Anthropic (Claude)

Payments: Stripe, RevenueCat

Infrastructure: Turborepo monorepos, Railway, EAS Build

Language: TypeScript throughout

Testing: Vitest, Playwright

Analytics: PostHog, custom dashboards

- What We're Looking For
Must Have;
5+ years building production web apps with React and TypeScript

Strong Next.js experience (App Router, API routes, SSR)

Comfortable with PostgreSQL — migrations, schema design, query optimisation

Experience integrating AI/LLM APIs (OpenAI, Anthropic, or similar)

Solid API design skills — auth, validation, error handling, rate limiting

Testing discipline — unit, integration, E2E

Comfortable context-switching across multiple products

Can work autonomously with clear scope and minimal oversight

- Nice to Have
React Native / Expo experience

Supabase or similar BaaS

AI-assisted development workflows (Claude Code, Cursor, Copilot)

Data visualisation / dashboard experience (D3, Recharts, Power BI embeds)

SaaS subscription patterns (tiering, feature gating, billing)

Wearable / IoT integrations

WCAG 2.1 AA accessibility

UK GDPR / data compliance awareness

- How We Work
Small team, high trust, fast shipping

AI-augmented development — agentic tooling built into the workflow

Architecture-first — we agree on contracts before coding

Monorepo patterns with shared types and design tokens

Quality gates on every piece of work — build, lint, type-check, tests

Phase-based delivery with clear scope docs

- What You'll Get
Direct collaboration with the founder — short feedback loops, real influence

Variety — multiple products, not the same CRUD app forever

AI tooling that genuinely accelerates your output

Well-documented, well-architected codebases

Ownership of meaningful features across the portfolio

- Working Arrangement
Fully remote

Part-time to start

Opportunity to move to full-time

- To Apply
Send us:
Your CV or portfolio

A brief note on why this interests you

Links to relevant shipped products

Your availability and rate/salary expectations

Contact: ----------

We look forward to hearing from you

VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0423
Total Execution Time  0.0437
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,515,016 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Senior-Full-Stack-Engineer-1611777
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 15 (0.0270 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0017   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1611777
 LIMIT 1 
0.0004   SELECT *
FROM `employers`
WHERE `employer_id` = 878286
 LIMIT 1 
0.0173   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1611777
AND `misc`.`idIS NULL 
0.0007   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1611777
AND `misc`.`idIS NULL 
0.0005   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-06-20',ej.date_added) duration_daysDATEDIFF('2026-06-20',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-06-20',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1611777' 
0.0007   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1611777 
0.0005   SELECT COUNT(DISTINCT t.id) as cnt
FROM 
`t_thread` `t`
INNER JOIN `t_message` `mON `t`.`id` = `m`.`thread_id`
INNER JOIN `t_message_employer` `eON `m`.`id` = `e`.`message_id`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1611777
AND `misc`.`idIS NULL 
0.0009   UPDATE employer_jobs SET hit_counts '***Mar-27-2026=169***Mar-28-2026=57***Mar-29-2026=32***Mar-30-2026=41***Mar-31-2026=93***Apr-01-2026=56***Apr-02-2026=5***Apr-03-2026=5***Apr-04-2026=6***Apr-05-2026=8***Apr-06-2026=6***Apr-07-2026=6***Apr-08-2026=2***Apr-09-2026=4***Apr-10-2026=2***Apr-11-2026=2***Apr-12-2026=2***Apr-13-2026=1***Apr-14-2026=2***Apr-15-2026=3***Apr-16-2026=1***Apr-18-2026=1***Apr-19-2026=3***Apr-20-2026=5***Apr-21-2026=4***Apr-22-2026=5***Apr-23-2026=12***Apr-24-2026=1***Apr-25-2026=1***Apr-27-2026=4***Apr-28-2026=2***Apr-29-2026=2***Apr-30-2026=8***May-01-2026=3***May-03-2026=5***May-04-2026=5***May-05-2026=1***May-06-2026=3***May-07-2026=2***May-08-2026=3***May-09-2026=3***May-10-2026=1***May-11-2026=1***May-12-2026=1***May-13-2026=1***May-14-2026=4***May-16-2026=4***May-18-2026=4***May-20-2026=24***May-21-2026=9***May-22-2026=2***May-23-2026=1***May-24-2026=1***May-25-2026=1***May-26-2026=2***May-27-2026=2***May-29-2026=2***May-30-2026=3***May-31-2026=1***Jun-01-2026=1***Jun-02-2026=4***Jun-03-2026=2***Jun-05-2026=3***Jun-06-2026=1***Jun-07-2026=1***Jun-09-2026=2***Jun-12-2026=3***Jun-13-2026=1***Jun-20-2026=1' WHERE job_id'1611777'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Mar-2026=392***Apr-2026=159***May-2026=89***Jun-2026=19' WHERE job_id'1611777'  
0.0013   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1611777' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1611777 
0.0012   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '878286'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)