ALL WORK
LIVE A METRA PRODUCT

FoSho

A career snapshot platform built on short video profiles — the space between a formal CV network and informal social media. Web and mobile clients on a Spring Boot API, with recording, editing, discovery, messaging and job posting in one product. Live at fosho.ie.

Open fosho.ie ↗ The company behind it →
FoSho web app
OVERVIEW
ROLECO FOUNDER · FULL-STACK DEV
STATUSLIVE
OWNERMETRA
CLIENTSWEB · MOBILE
FRONTENDREACT · TS · VITE
MOBILEEXPO · REACT NATIVE
BACKENDSPRING BOOT · JWT
DATAPOSTGRESQL · FLYWAY
MEDIAS3 · CLOUDFRONT · FFMPEG

The problem

Formal professional networks are built for long-term career identity and high-commitment networking; social platforms are built for everything except hiring. Casual, part-time and entry-level work falls between the two, where the thing that decides a fit — how someone communicates — never reaches the page. FoSho targets that gap: job seekers introduce themselves in a short video, employers post roles the same way and review applicants by watching rather than parsing.

The product

RECORDING

Record in the browser with camera and microphone access, a teleprompter and framing controls — or upload an existing clip.

EDITOR

Non-destructive trimming, crop, zoom and mirror, previewed against the timeline before publishing. The source file is never overwritten.

PUBLISHING

Snapshots publish with title, city, segment and tags, then appear on the profile and in public discovery once processing and moderation status clear.

DISCOVERY & JOBS

Browse and search public profiles and postings. Employers publish roles as snapshots; applicants respond with their own.

MESSAGING

Thread-based, with a request/accept step before a conversation opens — spam has to get past consent first. Inactive tabs pause polling.

ACCESSIBILITY

Theme, high contrast, reduced and paused motion, large text, hide-images and language are user settings — persisted locally and applied as document-level attributes, so they survive reloads.

MODERATION

Users can report content, and moderation records are first-class rows in the schema rather than an afterthought.

ARCHITECTURE

Two clients, one API

Media never touches the database; interface, business logic, persistence, object storage, processing and AI stay separate concerns.

CLIENTS

React, TypeScript and Vite as a single-page app on the web; Expo and React Native on mobile. Both talk to the same REST API, so behaviour stays consistent while interaction patterns stay native to the device.

API & AUTH

Spring Boot with JWT access tokens and stored refresh tokens. Signup and login validate client-side first, then hash-verify server-side; sessions survive refreshes without re-authenticating.

PERSISTENCE

PostgreSQL through JPA, with Flyway migrations so a schema change is reproducible from development to production. Users, snapshots, job posts, threads, messages, refresh tokens and moderation jobs are modelled explicitly.

MEDIA PATH

Uploads land in S3 and are served through CloudFront; FFmpeg handles validation and transformation in the backend runtime. Postgres stores object keys and metadata, never the video itself.

DEPLOYMENT

Static frontend build, Dockerised backend on Java 21 with FFmpeg available, managed Postgres running migrations at startup, and every credential injected as a platform secret rather than committed.

MY REMIT

What I own here

Co-founded and built with a co-founder on the front end.

HOSTING & DATABASE

I run the hosting and the PostgreSQL layer — schema design, Flyway migrations, environment secrets, S3 and CloudFront delivery, and the deploy path that keeps them in step.

BACKEND

The Spring Boot API is mine: authentication and refresh tokens, profile, snapshot, messaging and job endpoints, and the media processing path around FFmpeg.

CODE REVIEW

I review what goes into the repository across web, mobile and backend — the reason the CI matrix exists and the reason it stays green.

FRONTEND DESIGN

The interface is co-designed — I shape flows, accessibility behaviour and component structure alongside my co-founder rather than owning it outright.

CI COVERAGE

Every push runs frontend typecheck, lint and production build, mobile typecheck, and backend compile and test. Web, mobile and backend all have to pass before anything is considered buildable.

BACKEND TESTS

The backend suite exercises real behaviour rather than proving the code compiles, and it ran throughout development rather than being bolted on before submission.

MANUAL PASSES

Camera and microphone permissions, recording usability, preview behaviour, responsive layouts, accessibility modes and message requests get tested by hand — automation can't judge whether a recording flow feels usable.

ROADMAP

What comes next

Richer moderation dashboards and review workflows for reported content.

End-to-end tests across signup, login, recording upload, browse and messaging, plus wider frontend and mobile coverage.

Employer analytics for applicant review and posting performance.

More discovery filters — location, role type, availability, profile tags.

Media processing queues and structured logging, monitoring and alerting as upload volume grows.

NEXT
Sancturium →
miracle.oshafi@icloud.com