DEV Community

Mackenzie
Mackenzie

Posted on

OutFit: A Little Movement. A Little More Outside.

Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass Submission 🌿

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass

What I Built

Getting outside can start with a small decision: what can I realistically do today?

OutFit application landing page

I built OutFit, a fitness-planning prototype for adults who want to start moving or return to a regular routine. It turns a goal, available days, and recent activity into a seven-day plan with easy walking, gentle run-walk sessions, mobility, and rest.

The idea is to make planning a short step toward doing something outside. Open Today, check the activity, and head out. Afterward, record what you actually did and add a recovery check-in.

Plans can change as the week unfolds. If someone reports low energy or poor sleep, they can preview an adjustment to their remaining sessions before accepting it. Completed activity stays in their history.

OutFit encourages outdoor movement while allowing an indoor alternative when going outside is unsuitable. It is a habit-building prototype, with conservative planning limits, rather than a medically validated fitness service.

Demo

Watch the OutFit demo on YouTube

To try it locally, the README includes setup instructions and a walkthrough covering onboarding, plan generation, activity logging, and recovery adjustments. You can explore the core loop without a running model through the labelled fallback planner.

Code

View the OutFit repository on GitHub

GitHub logo mso-docs / OutFit-Fitness-Trainer

Made for the Hacktoberfest Week 1: Touch Grass on DEV.to!

OutFit

Licensed under the MIT License.

A little movement. A little more outside.

Live Demo Site

OutFit is a responsive, local fitness-planning prototype for the Touch Grass hackathon. It helps an adult choose a realistic goal, preview and accept a seven-day plan, record activity and recovery, and review an adjustment. Local Ollama selects activities within deterministic policy limits. A validated fallback keeps the core loop working without a model.

OutFit Today screen

Demo video

Watch the OutFit hackathon demo on YouTube.

Run locally

Use Node 24 LTS and npm. From this repository:

npm ci
cp .env.example .env
npm run build
npm start
Enter fullscreen mode Exit fullscreen mode

Open http://127.0.0.1:3001 on the same computer. The server creates and migrates data/outfit.db automatically. .env loads at startup; existing environment variables take precedence. Stop with Ctrl+C. Restarting preserves saved profiles, logs, check-ins, and plans.

For development:

npm run dev
Enter fullscreen mode Exit fullscreen mode

Open http://127.0.0.1:5173. Vite proxies /api to the loopback Fastify server…

The repository includes the application, shared planning rules, automated tests, setup documentation, and verification notes.

How I Built It

OutFit uses React, TypeScript, and Vite for the interface, with a Fastify API and SQLite for the local server edition. A separate browser edition stores application data in the browser and can connect directly to a user-configured Ollama endpoint.

The AI planner runs through Ollama. The verified setup used qwen3.8:27b to generate structured seven-day proposals from the user’s profile and planning context.

The model works within an activity catalog and explicit policy limits. Its output passes through Zod schema validation and additional checks for dates, available days, activity choices, training budgets, and recovery constraints. Users review and accept a preview before it becomes their plan.

If inference fails or the response does not pass validation, OutFit produces a clearly labelled deterministic fallback. That keeps planning usable when a model is unavailable.

One important design decision was keeping activity instructions in application code. The model selects structured activities; fixed text supplies the instructions. This makes the resulting plan easier to inspect and keeps generated prose from changing the prescribed activity.

I also added a trainer chat for questions about habits and the saved plan. Chat does not automatically change accepted plans.

Real Ollama planning and trainer responses were verified using synthetic data. The repository records 69 passing automated tests, plus desktop and mobile browser checks. The browser edition’s deployed HTTPS connection to real Ollama remains a separate verification step.

Why Does Open Innovation Matter?

OutFit handles information about someone’s activity, recovery, and personal routine. Running inference on a machine they control makes privacy part of the architecture.

With Ollama, users can choose an installed model and run the planner without sending their planning context to a hosted model provider. After the software and model downloads, the same-computer setup can operate using local resources.

Open tooling also makes experimentation practical. I can change the model, inspect the prompts, revise the validation rules, and test the same planning contract without rebuilding around a particular provider’s API. There is no required hosted-model subscription or per-request API bill, although inference still requires suitable hardware.

A closed API could generate a plan, but it would introduce an external service dependency and require sending context to that service. Local inference gave me control over those choices.

For OutFit, that control supports the purpose of the project: help someone decide on a manageable activity, then leave the screen and do it.


Top comments (0)