Project Info
Inspiration
Work often gets stuck between an idea and the small steps needed to finish it. A simple request such as “prepare a meeting,” “research competitors,” or “share an update” can turn into several tabs, drafts, reminders, and approval messages. We wanted to build a workspace that helps people move from a clear outcome to prepared work without losing control of what is sent, scheduled, or published.
What it does
Proxima OS helps users organise everyday work in one place. A user can describe what they need to do, review a prepared plan and draft, edit it, save it for later, or start the work. The workspace supports meeting planning, email drafts, research briefs, proposals, campaign planning, saved knowledge, approvals, and activity history. For social campaigns, users can create channel-specific drafts, choose connected accounts, approve a post immediately, schedule it for later, or create a recurring campaign around a topic. For example, a cyber security campaign can be broken into several practical angles and published daily or weekly until the user stops it. Nothing is sent without a clear action from the user, unless they have deliberately enabled a recurring campaign.
How we built it
We built the frontend with Next.js and the backend with FastAPI. The app uses authenticated API routes, WebSockets for live updates, and durable storage for workflows, drafts, approvals, connected accounts, and campaign history. We connected the workspace to services such as Gmail, Google Calendar, Slack, Notion, X, LinkedIn, Facebook Pages, and WhatsApp Business through their supported authentication flows. The drafting features use OpenAI models to turn a short request into a structured plan, working draft, research outline, or channel-specific social post. We designed the interface so users can always review and edit the result before it becomes an action.
Challenges we ran into
The hardest part was making connected services behave honestly. Every provider has different permissions, callback rules, token lifetimes, account requirements, and publishing APIs. We had to handle cases where an account is connected but does not yet have permission to publish, where a Facebook Page ID is missing, or where a scheduled post cannot run because the hosting service is asleep. Another challenge was keeping the experience simple while supporting different kinds of work. A research report, a meeting invitation, and a social campaign should not all feel like the same generic form.
Accomplishments we're proud of
Built a complete flow from a written goal to an editable work plan. Added a real approval system instead of treating approval as a visual label. Made campaign publishing show the actual result from each connected provider. Added recurring topic campaigns that can continue on a daily or weekly schedule until stopped. Kept drafts, approvals, activity, and connected accounts visible in one workspace. Made the product usable locally and deployable with a Next.js frontend and FastAPI backend.
What we learned
We learned that the useful part of automation is not removing the person from the process. It is reducing repetitive work while making the next decision obvious. We also learned that integrations need clear status messages. A button should not say something was published if it was only saved for approval. Showing the real state of a task builds more trust than hiding provider errors.
What's next
Next, we want to improve reliability for scheduled work with a dedicated always-on worker, add provider-specific image publishing, improve account naming when several accounts are connected, and make recurring campaigns more flexible with custom posting times and campaign limits. We also want to add richer research outputs, better collaboration features, and clearer reporting so users can see what work was completed and what still needs their attention.
Proxima
Proxima is a work companion for turning a written request into prepared, reviewable work. It keeps plans, drafts, approvals, connected accounts, and activity in one place so the user remains in control of what is sent or scheduled.
What it does
- Turn a work request into a plan and an editable prepared draft.
- Improve a prepared draft with the configured OpenAI model, then save or download it.
- Keep progress, approvals, results, history, and saved work together.
- Generate channel-specific social drafts, edit them, and approve them for delivery.
- Select a connected X, LinkedIn, or Facebook account when more than one is available.
- Schedule a one-time campaign or run a recurring daily or weekly topic series until it is stopped.
- Connect supported services through their own sign-in flows.
- Send a user-authored message through a connected Slack workspace.
- Deliver live updates to signed-in users.
Proxima has a Next.js web application and a FastAPI service. Local development uses a JSON data store. A PostgreSQL-compatible store can be selected for hosted environments.
Built with Codex and GPT-5.6
I used Codex throughout the build to work through the frontend and backend request paths, improve the approval and campaign flows, trace integration problems, add regression tests, and keep the README and architecture notes aligned with the code.
GPT-5.6 is used by Proxima to prepare first-pass work drafts and channel-specific social copy when OPENAI_API_KEY is configured. These responses are drafts, not automatic decisions: a user can edit them, save them, and decide whether an external action should be approved or scheduled.
The project deliberately keeps this boundary visible. Provider actions require a connected account and the right credentials, while approvals and delivery results make it clear what was requested, what was sent, and what a provider accepted or rejected.
Social campaigns
The Campaigns workspace creates editable drafts for X, LinkedIn, Facebook Pages, and WhatsApp Business. A saved campaign appears in Needs Your Approval and can be published immediately or scheduled. Delivery results are stored per provider so the interface does not report a post as sent when a provider rejected it.
The Recurring campaigns workspace turns one topic, such as “Cyber security,” into a series of subtopics. It generates and posts the next instalment at the selected daily or weekly cadence until the user stops the campaign.
Before enabling publishing, connect the appropriate accounts in Connected Apps. Use Add account to connect another X, LinkedIn, or Facebook account. WhatsApp Business sends a direct message, so it requires an opted-in recipient and valid Cloud API credentials.
Text publishing is implemented. Images remain available in campaign previews, but provider-specific media upload flows are not yet implemented, so an image is not silently claimed as published.
Project layout
backend/ API, authentication, data storage, integrations, and tests
frontend/ Web application and public pages
docs/ Technical notes for contributors
.env.example Backend environment template
Run locally
Start the backend
cd backend
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item ..\.env.example .env
.\start-local.ps1
Open http://localhost:8000/ for the API reference or http://localhost:8000/health for the health check.
0.0.0.0 is only a server bind address. Use http://localhost:8000/ in a browser.
Start the frontend
cd frontend
npm ci
Copy-Item .env.example .env.local
npm run dev
Open http://localhost:3000, create an account, and submit a request.
Configuration
The backend reads backend/.env; the frontend reads frontend/.env.local. Do not commit either file.
For a hosted environment, configure these values with your hosting provider:
# Backend
PROXIMA_STORAGE_BACKEND=postgres
PROXIMA_DATABASE_URL=postgresql://...
PROXIMA_JWT_SECRET=<long-random-value>
PROXIMA_TOKEN_ENCRYPTION_KEY=<long-random-value>
PROXIMA_CORS_ORIGINS=https://your-frontend.example
PROXIMA_PUBLIC_APP_URL=https://your-frontend.example
PROXIMA_PUBLIC_API_URL=https://your-api.example
PROXIMA_FRONTEND_CALLBACK_URL=https://your-frontend.example/dashboard/integrations
PROXIMA_SOCIAL_SCHEDULER_INTERVAL_SECONDS=30
PROXIMA_LINKEDIN_API_VERSION=202606
PROXIMA_META_GRAPH_API_VERSION=v22.0
FACEBOOK_PAGE_ID=
# Password reset email
PROXIMA_SMTP_HOST=smtp.example.com
PROXIMA_SMTP_PORT=587
PROXIMA_SMTP_USERNAME=...
PROXIMA_SMTP_PASSWORD=...
PROXIMA_SMTP_FROM=Proxima <support@your-domain.example>
PROXIMA_SMTP_USE_TLS=true
# Frontend
PROXIMA_API_BASE_URL=https://your-api.example
NEXT_PUBLIC_PROXIMA_WS_URL=wss://your-api.example/ws
Add provider credentials only for the services you intend to use. Keep all secrets in the hosting provider’s environment settings. In production, password reset links require a working SMTP provider.
Deployment checklist
Before release, confirm that:
- The backend health endpoint is public.
- A new user can register, sign in, and reset a password.
- The web application connects to the secure WebSocket endpoint.
- A request can reach an approval step and be completed.
- Persistent data survives an application restart.
- Every enabled provider callback matches its deployed URL exactly.
- A social post can be approved and its provider result appears in Campaigns.
- The scheduled-post worker stays available for every campaign that needs exact delivery times.
Recurring and scheduled campaigns are checked by the backend while it is running. A host that sleeps inactive services cannot guarantee an exact posting time; use an always-on worker or host for reliable scheduling.
The backend includes a Dockerfile and Procfile. The frontend can be deployed to Vercel or another Node.js host.
For a local Docker setup, run docker compose up --build from the repository root. The backend uses port 8000 and the frontend uses port 3001.
Checks
Backend:
cd backend
.\.venv\Scripts\python.exe -m compileall -q app
.\.venv\Scripts\python.exe -m pytest tests -q
Frontend:
cd frontend
npm run typecheck
npm run build
License
This project is available under the MIT License.
Analysis
View
Metric
- 42
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- FastAPIIn code
- JavaScriptIn code
- Next.jsIn code
- OpenAIIn code
- PythonIn code
- ReactIn code
- RedisIn code
- TypeScriptIn code
- DockerClaimed
- PostgreSQLClaimed
- SupabaseClaimed
- Tailwind CSSClaimed
- VercelClaimed
9 of 14 appear in the indexed code. 5 claimed on Devpost could not be matched to code, which may simply mean the tool leaves no trace in the repository.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
421 KB
Source files
160
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Linkxee-Tech/Proxima
187 files · 10.9 MB · @ 62fa7ac
Structure
Interface
100 files · 53%Screens, components and styles rendered to the user.
API & routing
19 files · 10%Request entry points: routes, handlers and controllers.
Application logic
20 files · 11%Domain rules, services and shared utilities.
+2 moreBackground jobs
3 files · 2%Work run outside a request: tasks, workers and schedules.
Data & schema
2 files · 1%Schema definitions, migrations and data access.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- JavaScript36%
- Python35%
- CSS20%
- TypeScript5%
- Markdown4%
- YAML0%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
backend/requirements.txt
pypi · 19- bcrypt
- cryptography
- email-validator
- fastapi
- httpx
- networkx
- openai
- passlib[bcrypt]
- pg8000
- pinecone-client
- prometheus-client
- pydantic
- pydantic-settings
- PyJWT
- pytest
- python-multipart
- redis
- tzdata
- +1 more
frontend/package.json
npm · 12- @xyflow/react
- axios
- dagre
- next
- react
- react-dom
- socket.io-client
- zustand
- +4 more
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.