An open source self hosted fantasy manager. https://fantasy.lschaefer.xyz
  • TypeScript 86.5%
  • JavaScript 13.2%
  • Dockerfile 0.2%
  • CSS 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Lukas Schaefer a5916a4123
All checks were successful
Build / setup (pull_request) Successful in 33s
Build / unit (pull_request) Successful in 42s
Build / cypress (pull_request) Successful in 2m2s
Build / cleanup (pull_request) Successful in 2s
Build / setup (push) Successful in 46s
Build / unit (push) Successful in 25s
Build / cypress (push) Successful in 1m39s
Build / cleanup (push) Successful in 2s
Test more efficient worflow
Signed-off-by: Lukas Schaefer <lukas@lschaefer.xyz>
2026-07-30 22:38:30 -04:00
.github Test more efficient worflow 2026-07-30 22:38:30 -04:00
components First commit for moving git instances 2026-07-30 19:08:51 -04:00
cypress Make predictions UI prettier and show amount of points each prediction gives (#951) 2026-06-11 20:31:13 +00:00
development Pass hash also in docker publish 2026-07-30 20:46:42 -04:00
docker Pass hash also in docker publish 2026-07-30 20:46:42 -04:00
locales Update german translations (#764) 2024-06-21 17:04:51 -04:00
migrations Fix leagueSettings migration to kysely 2025-05-13 15:11:28 -04:00
Modules Adds world cup 2026 and fixes search for when club exists in multiple leagues (#948) 2026-06-11 10:00:10 +00:00
pages First commit for moving git instances 2026-07-30 19:08:51 -04:00
public Has the images for the signin with google/github stored in public folder (#678) 2024-04-29 11:49:23 -04:00
sample Sets the domain for all of the images used in testing to 0.0.0.0 (#791) 2024-08-19 13:40:54 -04:00
scripts First commit for moving git instances 2026-07-30 19:08:51 -04:00
store First commit for moving git instances 2026-07-30 19:08:51 -04:00
styles Adds a better tutorial 2023-01-10 09:32:54 -05:00
types Fix types for db 2025-05-13 15:18:13 -04:00
.env.test.local Moves the download picture option to the admin panel (#497) 2023-08-25 12:05:48 -04:00
.gitignore Fix mui 2025-06-07 13:57:43 -04:00
.prettierignore switch to kysely (#863) 2025-05-09 19:12:32 -04:00
.prettierrc.json Adds prettier 2022-07-11 15:01:37 -04:00
CONTRIBUTING.md First commit for moving git instances 2026-07-30 19:08:51 -04:00
cypress.config.js Update nextjs to v16, enable react compiler, and fix tests (#938) 2026-02-04 17:14:34 -05:00
Dockerfile Update Node.js to v24 (#927) 2026-01-25 17:40:36 -05:00
env.md Drop mysql support (#628) 2023-12-03 17:24:37 -05:00
eslint.config.mjs Update nextjs to v16, enable react compiler, and fix tests (#938) 2026-02-04 17:14:34 -05:00
jest.config.ts Adds jest tests (#831) 2024-12-14 23:02:59 -05:00
leagues.md Adds world cup 2026 and fixes search for when club exists in multiple leagues (#948) 2026-06-11 10:00:10 +00:00
LICENSE Update license year to 2024 2024-03-15 22:59:53 -04:00
next-env.d.ts Improve logic for figuring out game end and update WorldCup plugin (#952) 2026-06-12 10:23:29 +00:00
next.config.js Update nextjs to v16, enable react compiler, and fix tests (#938) 2026-02-04 17:14:34 -05:00
package-lock.json Fix removed clubs for world cup still showing up (#958) 2026-06-28 15:12:15 +00:00
package.json Test more efficient worflow 2026-07-30 22:38:30 -04:00
README.md First commit for moving git instances 2026-07-30 19:08:51 -04:00
renovate.json Update renovate config 2026-07-30 19:31:43 -04:00
SECURITY.md Adds support for sqlite 2022-07-21 11:34:20 -04:00
TRANSLATING.MD Allows players to predict match results (#622) 2023-12-02 16:11:14 -05:00
tsconfig.json Fix picture downloading status checks (#950) 2026-06-11 12:53:54 +00:00
tsconfig2.json Moves the db types to database.d.ts (#625) 2023-12-03 16:37:52 -05:00

Fantasy Manager

Description

This is meant to be an open source self hosted way to play a fantasy manager for some leagues. If you want to try this out use my hosted version which is located here. For any questions feel free to post a question in the discussions tab.

Features

  1. Completely free and open source.
  2. Many different leagues to use(Bundesliga, EPL, etc).
    1. You can even make your own custom plugin to support any league.
  3. Unlimited users and unlimited leagues.
  4. Customize starting money.
  5. Customize starred player bonus.
  6. Limit transfer amount(Note all users are allowed unlimited transfers while they have an empty squad).
  7. Ability to allow players to be bought by multiple users in the same league.
  8. Ranking tables for(Only in leagues):
    1. Top points for every matchday
    2. Top points in total
    3. Filter by origin (Fantasy, Prediction, or all)
  9. Many ways to search through players:
    1. By price
    2. By total points
    3. By average points
    4. By the last match points(Requires the server to have been up for the last match day)
    5. By Club
    6. By Name
    7. By Position
  10. Predict matches to earn more points for the league.
  11. Customize points for predictions.
  12. Download player data as json or csv
  13. See all historical player data(As long as the server was up).
  14. See historical squads for every league.
  15. And all of these features in a Modern Responsive UI available in a light and dark theme.
  16. Customize UI to look however you want.
  17. Web admin panel for website administrator to change settings.

Roadmap

If you would like to have a feature added you can request it in an issue or make it yourself and add a pull request.

Screenshots

Here is a sample screenshot for more go to the screenshots folder which is in the public folder or to the main page of my hosted version. Screenshot of League page Dark Theme Screenshot of League Page Light Theme

Production or Installation

There are 2 options to run this with and without docker. If you are unsure I would recommend docker it is easier. If you would like to install this without docker you can use the Dockerless version. After installing with either process follow the post-installation guide

Sqlite

  1. First download this file and edit the file to your preferences.
wget 'https://git.lschaefer.xyz/lukasdotcom/fantasy-manager/raw/branch/main/docker/docker-compose.yaml'
  1. Then run this.
docker-compose up

Post-Installation

  1. You need to first of all login to the admin user. By default this should be the very first user to login. If your user is not the admin or you want to change the admin go to admin for help changing the admin user.
  2. Then go into the admin panel for that user. (You should see it in the menu)
  3. Enable all the plugins you want. Plugins are basically leagues and you can add custom ones, but all the official ones should be listed.

Development

Read the contributing guidelines.

Analytics

This service collects some simple analytics when you host this service that currently includes only the following information. This is collected daily and in aggregate so individual user data of your server is never sent to the analytics server. You may optout by setting ANALYTICS_OPT_OUT to optout.

  1. serverID - This is a random id that is generated the first time the server boots.
  2. version - The version of the server.
  3. users - The number of users.
  4. activeUsers - The number of users that were logged in on that day.
  5. Then for every type of league (Bundesliga, EPL, etc) there are 2 pieces of data collected:
    1. Active Users - The number of Active Users in a league with that type.
    2. Users - The number of users in a league of this type.
  6. The total number of users using dark or light theme.
  7. From the active users the total of the dark and light theme.
  8. The total number of users using a certain language.
  9. From the active users the total of a certain language.

Admin User

To change a user to the admin user follow these steps:

  1. You need to figure out the userID of the user that you want to change. To do this go to the usermenu of the user and it should tell you the userID.
  2. Then edit the enviromental variables for the server and change it to the userID you just found.
  3. Then restart the server.