Openfront Sports Agents
What the Sports Agents repository contains today, who it is for, its surfaces, and how ownership works.
Openfront Sports Agents is a self-hosted Openfront application built on Next.js, Keystone, GraphQL, Prisma, and PostgreSQL. The public repository is at github.com/openshiporg/openfront-sports-agents.
The sports-agents domain has not been built yet in the public source. There are no sports, athlete, agent, client, contract, or deal models. There are no Sports Agents platform pages and no customer-facing storefront. The repository today is close to the next-keystone-starter template, and its README is still the starter's README. These pages describe only what exists in the code now.
What exists today
- Data models. Four Keystone lists:
User,Role,Todo, andTodoImage.Todois the starter's example content model. It shows each field type (text, document, select, multiselect, integer, float, decimal, bigInt, timestamp, json, password, image, relationship). - Dashboard. The shared Openfront admin shell at
/dashboard. It has generic list, item, and create pages for every Keystone list, plus first-user setup, sign-in, optional sign-up, password reset, and a no-access page. - Roles and permissions. A
Rolelist with checkbox permission flags. The first user gets an Admin role with every flag on. - AI chat. A dashboard chat sidebar that calls
/api/completion. It uses OpenRouter, either with server keys or with keys the user stores in their own browser. - MCP endpoint.
/api/mcp-transport/[transport]exposes generic GraphQL tools (list models, query, create, update, delete, search). It acts with the caller's session cookie. - GraphQL API.
/api/graphql, served by GraphQL Yoga with the Keystone schema. - Image storage.
Todo.coverImageandTodoImage.imageuse an S3-compatible bucket.
Who it is for
Right now the repository is useful to developers who want to start building the Sports Agents product on the shared Openfront stack. It is not yet useful to a sports agency as a working product.
Product surfaces
| Surface | Path | Status in current source |
|---|---|---|
| Landing page | / | The starter's welcome page with links to /dashboard and /api/graphql |
| Admin dashboard | /dashboard | Generic Keystone list and item pages for User, Role, Todo, TodoImage |
| Platform pages | /dashboard/platform/... | Not present. There is no features/platform folder |
| Storefront | none | Not present. There is no features/storefront folder |
| GraphQL | /api/graphql | Keystone CRUD plus redirectToInit |
| AI and MCP | /api/completion, /api/mcp-transport/[transport] | Generic, schema-driven helpers |
Getting started
Requirements, environment, migrations, first user, and deployment.
Architecture and workflows
Current models, access rules, dashboard flows, and GraphQL operations.
External dashboard
Skill for building a custom dashboard, and the pages that exist today.
External storefront
There is no storefront yet. Public routes and a skill for building one.
Integrations and boundaries
S3, SMTP, OpenRouter, MCP, and their limits.
Current limitations
What is missing or partial in the current source.
Ownership and tenancy
There is no organization, agency, or tenant model. One deployment has one database and one set of users. Access is controlled by the role attached to each user:
- A user can always read and edit their own
Userrecord. Seeing or editing other people needscanSeeOtherPeopleorcanEditOtherPeople. - A
Todobelongs to the user inassignedTo. Users withoutcanManageAllTodosonly see and change their own todos. - Only roles with
canAccessDashboardcan use the dashboard.
If Sports Agents later needs agencies, teams, or clients as separate owners, that model has to be added.