{"id":35043959,"url":"https://github.com/darklab8/fl-darkstat","last_synced_at":"2026-05-03T05:02:27.716Z","repository":{"id":170805130,"uuid":"335300614","full_name":"darklab8/fl-darkstat","owner":"darklab8","description":"web site for Freelancer Discovery community to provide info about game stuff for players. It is able to switch between SSG and SSR ways to run it.","archived":false,"fork":false,"pushed_at":"2026-04-17T23:36:52.000Z","size":67865,"stargazers_count":7,"open_issues_count":30,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-18T01:29:13.315Z","etag":null,"topics":["freelancer","freelancer-discovery","game","go","golang","tools"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/darklab8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2021-02-02T13:36:51.000Z","updated_at":"2026-04-17T23:02:58.000Z","dependencies_parsed_at":"2024-03-23T23:30:47.204Z","dependency_job_id":"df518722-f790-4a08-8d80-41640e2af40c","html_url":"https://github.com/darklab8/fl-darkstat","commit_stats":null,"previous_names":["dd84ai/fldarknet"],"tags_count":575,"template":false,"template_full_name":null,"purl":"pkg:github/darklab8/fl-darkstat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Ffl-darkstat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Ffl-darkstat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Ffl-darkstat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Ffl-darkstat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/darklab8","download_url":"https://codeload.github.com/darklab8/fl-darkstat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/darklab8%2Ffl-darkstat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32286273,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-25T18:29:39.964Z","status":"online","status_checked_at":"2026-04-26T02:00:05.962Z","response_time":129,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["freelancer","freelancer-discovery","game","go","golang","tools"],"created_at":"2025-12-27T08:42:58.319Z","updated_at":"2026-04-26T05:05:14.200Z","avatar_url":"https://github.com/darklab8.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"it has flstat functionality + trading functionality\n![how it looks](docs/flstat_view.png)\n\nalso it is a map too:\n![how map looks](docs/darkmap/system.png)\n\n# Description\n\nonline version of the [flstat](https://discoverygc.com/forums/showthread.php?tid=115254) (and NavMap) to navigate game data of [the game Freelancer](https://youtu.be/RHlH_qOH5zc). You can see data about Bases, Guns, Ships and multiple other stuff.\n\nIt is able to work in two mods:\n- Static Site Generator to build html/css/js files to deploy them for example to github pages (In this way runs for Freelancer Vanilla and FLSR)\n- Live web backend for more nearly real time update of content (useful for Discovery). Cached behind CDN to run smmothly\n\nSee demos:\n\n- [Freelancer Discovery version](https://darklab8.github.io/fl-data-discovery/) [(action)](https://github.com/darklab8/fl-data-discovery/actions/workflows/publish.yaml)\n  - [Discovery As Backend version](https://darkstat.dd84ai.com/)\n  - [Discovery Map](https://darklab8.github.io/fl-data-discovery/map.html)\n  - [Discovery API](https://darkstat.dd84ai.com/swagger/index.html)\n- [Freelancer Vanilla version](https://darklab8.github.io/fl-data-vanilla/) [(action)](https://github.com/darklab8/fl-data-vanilla/actions/workflows/publish.yaml)\n  - [Vanilla as Backend version](https://darkstat-vanilla.dd84ai.com/)\n  - [Vanilla Map](https://darklab8.github.io/fl-data-vanilla/map.html)\n- [Freelancer Sirius Revival](https://darklab8.github.io/fl-data-flsr/) [(action)](https://github.com/darklab8/fl-data-flsr/actions/workflows/publish.yaml)\n  - [Freelancer Sirius Revival Map](https://darklab8.github.io/fl-data-flsr/map.html)\n- [Freelancer Universe](https://flustat.kofakulno.com/) (the deployment is not maintain by darkstat's author)\n  - [Freelancer Universe Map](https://flustat.kofakulno.com/map.html)\n\n- [Staging dev version](https://darklab8.github.io/fl-darkstat/)\n\n# Contains sub projects\n\n- [darkcore Readme](./darkcore/README.md) - reusable web part for freelancer related web tools. We can say it is filling same niche as \"Framework\" in normal projects.\n- darkrelay - subproject to make darkstat having dynamic backend, which helps to break limitations of a static site generator which darkstat originally started as.\n- configs - ORM library to access configs data.\n- [darkmap](./darkmap/README.md) - navigational space map, remake of old navmap by Space Error.\n- [darkapis](https://darkstat.dd84ai.com/swagger/index.html) makes for raised live instances of darkstat having API querable with Swagger documentation\n- helpers - some util cli actions requested\n- darkstat - for main export and frontend part of `flstat` functionality of application\n\n# Support\n\n- It was made in mind with supporting [Freelancer Discovery](https://discoverygc.com/) as first order.\n- Support is extended to Vanilla version.\n- Any other mode will be supported on request, see contacts to get in touch.\n  - things were tested for HD edition at some point of time\n  - for Freelancer Sirius Revival at some point of time\n  - for Open Sirius at some point of time\n\n# Development setup\n\nThe project assumes\n- u are working with it through VSCode IDE, and having installed [Go extension](https://marketplace.visualstudio.com/items?itemName=golang.Go)\n- And having [templ extension](https://templ.guide/developer-tools/ide-support/#visual-studio-code)\n  - Optionally u are able to use any other supported IDE there, as instructions are provided for more of them. See https://templ.guide/developer-tools/ide-support for other supported IDEs.\n- we use VScode's way to inject env var `\"ENVERANT_ENV_FILE\": \"${workspaceFolder}/.vscode/enverant.json\"` for terminal, debugging and test running configurations in order to use all dev env variables specified in [enverant.json file](./.vscode/enverant.json)\n  - This `ENVERANT_ENV_FILE` is injected in our [settings.json](./.vscode/settings.json) and [launch.json](./.vscode/launch.json)\n- Your var `CONFIGS_FREELANCER_FOLDER` must point to existing root of a Freelancer game. Which can be Freelancer Vanilla, Discovery or FLSR at this point.\n- Succesful configuration IDE assumes u are able to run in debug mode prject in `web` mode at least as it is specified in [launch.json](./.vscode/launch.json)\n  - And u are able to launch specific unit tests in debug mode by clicking in IDE onto green appeared arrows at the left from test function names. Vscode uses `\"go.testEnvVars\"` in [settings.json](./.vscode/settings.json) to inject the same enverant.json for the functioning of tests.\n\nGeneral instruction:\n- git clone the repo https://github.com/darklab8/fl-darkstat.git\n- install golang of project version or higher (potentially will work anyway).\n  - See current golang version [in Dockerfile](./Dockerfile)\n- install [templ](https://templ.guide/quick-start/installation)\n  - go install github.com/a-h/templ/cmd/templ@latest\n  - check specific version in [go.mod](./go.mod)\n  - In case of emergency we could use vendored in version perhaps\n- check [environment variables to set](.vscode/enverant.json)\n  - set your own environment variable FREELANCER_FOLDER to Freelancer Folder\n  - ensure it was set. `echo $FREELANCER_FOLDER` at Linux or `echo %FREELANCER_FOLDER%` at windows\n    - optionally is enough to change value in [enverant.json](.vscode/enverant.json) for that\n  - Check to have set other values from [enverant.json](.vscode/enverant.json)\n  - full list of variable possible to set available in help command `go run . help`\n- install [Taskfile](https://taskfile.dev/usage/) and check [commands to run](Taskfile.yml)\n  - run `task swag: build`\n  - run some command, for example `templ generate \u0026\u0026 go run . -stat-deals=false web` directly at this point\n    - check if there are any performance heavy workloads u can disable for faster dev env. `go run . help` to check available cli args and other options\n  - alternatively run `templ generate \u0026\u0026 go run . map web` to work in dev env with darkmap only\n- if u wish access to `task dev:watch` that reloads running web server on file changes, then install `pip install watchdog[watchmedo]` and ensure `watchmedo` binary is available to `task dev:watch` command written [in Taskfile](Taskfile.yml)\n\nIf u have problems with configuring development environment, then seek my contacts below to help you through it ^_^\n\n# Features\n\n- Long term maintance support for dozen of years. Minimum dependencies software with Golang and Htmx.\n- full GitOps. On commit push to redeploy it automatically\n  - See example in [fl-data-discovery repo](https://github.com/darklab8/fl-data-discovery). It contains .github/workflows + game data\n- scans Freelancer folder and builds to static assets (html/css/js) deployable to Github pages or any other static assets serving place.\n- Usable locally for Linux and Windows.\n- Cross mod support is available\n  - Freelancer Discovery\n  - Vanilla Freelancer\n  - Freelancer Sirius Revival\n  - helped to make it working for Freelancer Universe\n  - at some point debugged its working for Freelancer HD Edition\n  - may be will working for any other mod, if not, then request support\n\n# Darkstat has API access\n\n# JSON rest one, with swagger documentation\n\n- API has swagger documentation accessable from its interface by button \"API\" at the top of menu\n  - It is available only for Static Binary and Dockerized deployments currently.\n  - It is known to run in production for Freelancer Discovery, [check here](https://darkstat.dd84ai.com/swagger/index.html)\n  - accessable locally over https://localhost:8000, or optionally unix socket `/tmp/darkstat/http.sock` for extra performance boosts.\n  - deployed Discovery can be found at https://darkstat.dd84ai.com/swagger/index.html\n  - deployed Vanilla can be found at https://darkstat-vanilla.dd84ai.com/swagger/index.html\n\nJSON API has **[http api client lib](./darkapis/darkhttp/api_client.go)** written in Go. :)\n- [How to use it](./darkapis/darkhttp/api_client_test.go)\n- it has more methods, check [here for all of them](./darkapis/darkhttp/)\n\n# gRPC existed but was removed\n\nIn the past we offered **grpc client** too, but it **was decommissioned** in https://github.com/darklab8/fl-darkstat/pull/158 due being not very used and creating maintanance overhead\n- if there will be ever demand for gRPC, we could make it back\n- With gRPC you could export [our proto file](https://github.com/darklab8/fl-darkstat/blob/8a4903a459e2024bdacf8a3444603fc67403037a/darkapis/darkgrpc/statproto/darkstat.proto) and generate client with precise data structs and methods of API for your any language! Be it C#, Javascript, Python or even C++\n\u003cdetails\u003e\n  \u003csummary\u003eDetailed deprecated description\u003c/summary\u003e\n  - Full list of supported languages here https://grpc.io/docs/languages/\n  - You get static typing validations\n  - You get performance boosts from using grpc compression stuff\n  - We change server side smth? Just regenerate the lib to keep up with updates ^_^\n  - Import [darkstat proto file](https://github.com/darklab8/fl-darkstat/blob/8a4903a459e2024bdacf8a3444603fc67403037a/darkapis/darkgrpc/statproto/darkstat.proto) for its usage and generate client lib from it with `protoc` command\n  - addresses to connect:\n    - for local instance localhost:50051, or optionally unix socket `/tmp/darkstat/grpc.sock` at linux for extra performance boosts.\n    - for deployed instances for discovery and vanilla, they are hosted over darkgrpc.dd84ai.com and darkgrpc-vanilla.dd84ai.com accordingly. 80 and 443 ports accordingly\n    - [see example in golang](https://github.com/darklab8/fl-darkstat/blob/8a4903a459e2024bdacf8a3444603fc67403037a/darkapis/darkgrpc/server_test.go) of interacting with grpc if desired\n    - up to date exposed grpc domains can be found [in this file](./tf/production/main.tf) as rpc_prefix + zone combination\n  - Make sure to set in your client option to increase accepting data size `grpc.WithDefaultCallOptions(grpc.MaxCallRecvMsgSize(32 * 10e6))`.\n  - NOTE: By default Grpc goes through grpc endpoint and uses compression of Protocol Buffers. Ability to go Json in API Gateway (for which Swagger documentation is provided) is ONLY FALLBACK for situations when people unable to go gRPC native way. If you will go through gRPC getting started instruction, u will receive automatically for your language client generated to utilize Protocol Buffers\n\u003c/details\u003e\n\n# What makes different from regular flstat\n\n- Obviously online\n- i also added at last Commodities view with prices per volume ^_^ better reflecting situation for Freelancer Discovery.\n- It is interesting to see in Ship details exact Hp Types of equipment you can install onto ship. Other tabs like Guns, Shields, Engines show those Hp Type, so u could find equipment exactly supported for your Light Fighter, Heavy Fighter, Gunboat, Cruser or whatever (u can sort by column to find all such equipment)\n- Tractors tab has info regarding Discovery IDs and where to buy them ^_^\n- other extra tabs like Engines, CMs added\n- Tabs for different equipment could be showing more full list of equipment in \"Show all\" mode.\n- Has searching/filtering options with multiple matching items shown\n- You can pin items for comparison\n- For Discovery Freelancer, u can select ID/Tractor and having guns/ships etc filtered/shown according to what your ID can use without power core regeneration debuffs. Shows ID compatibility (75% ID compatibility at any equiped item will mean having only 75% of Power core regeneration)\n- **For up to date list of different features read** [its embedded documentation at \"Docs\" tab](https://darklab8.github.io/fl-data-discovery/index_docs.html)\n\n# Usage\n\n## Local usage\n\n- download latest from https://github.com/darklab8/fl-darkstat/releases , they are autobuilt from CI, so they will be always there.\n  - optionally build latest [according to instruction](https://github.com/darklab8/fl-darkstat/blob/550b40a49ec4f5dd1113457e4c96eee161296b7b/.github/actions/build/action.yml#L25) on your own if desired\n- put file into root of Freelancer folder and start\n  - optionally launch from anywhere, just add env variable FREELANCER_FOLDER with location to freelancer folder root.\n- visit http://localhost:8000/ as printed in console to see web site locally\n- Launching from `cmd` or any other console at Freelancer folder path is preferable. Because u will see detailed log output.\n  - optionally see all list of possible env vars and sub commands by running `darkstat help` command\n\nP.S. The tool uses lazy filesystem approach by grabbing first file with matching name. I did not use full paths.\nSo don't have folder \"DATA2\" duplicating all files in same Freelancer folder\n\n## Docker usage\n\n- [Docker releases](https://hub.docker.com/r/darkwind8/darkstat) are available too. tag `production` is latest stable and running in prod.\n- Configuration for its running check in terraform infra code of [module darkstat](./tf/modules/darkstat)\n  - you need to point at least volume -v /data:/path_to_frelancer_folder\n  - and point required environment variables [as described there](./tf/modules/darkstat/variables.tf)\n    - get full list of possible environment variables and commands with command like `docker run -it darkwind8/darkstat:production help`\n  - docker images are built for amd64 and arm64 :)\n\n# Acknowledments\n\n- The tool was strongly inspired by [flstat](https://discoverygc.com/forums/showthread.php?tid=115254) originally written by Dan Tascau\n  - regretfully original code was not found\n  - some things helped from [patch written in Assembly to flstat](http://adoxa.altervista.org/freelancer/tools.html) by Adoxa\n- In general a lot of stuff was checked from [Starport wiki](https://the-starport.com/wiki/)\n  - [Bribing probabilities](https://the-starport.com/forums/topic/5372/bribe-probabilities/6?topic_id=5565) were inspired by Adoxa conversation at Starport in 2014\n  - Also stuff like [market stuff](https://the-starport.com/wiki/ini-editing/typed-inis/markets/) page helped too\n- Formulas for angular stuff were found in [flint](https://github.com/biqqles/flint/blob/master/flint/entities/ship.py#L82)\n- [Discord Community in starport](https://discord.gg/freelancer-galactic-community-638984923591737355) also answered multiple questions\n  - as well as Freelancer Discovery dev community\n- Also thanks to The Alex (From Freelancer Discovery) for getting me [Python script for reading dlls](https://github.com/darklab8/fl-configs/blob/master/docs/inspiration/dll_reading/alex_py/main.py)\n  - That helped rewriting it in go for [configs lib](./configs)\n- Honorary mentions for very active moral support and extra ideas by\n  - IrateRedKite (from starport Discord)\n  - Bolte (from starport Discord)\n- Image attributions:\n - [Space icons created by Freepik - Flaticon](https://www.flaticon.com/free-icons/space)\n - [Legend icons]https://www.flaticon.com/free-icons/legend created by Hexagon075 - Flaticon\n- Darkmap is rewrite of project [Navmap](https://github.com/AudunVN/Navmap) made by AudunVN also known as Space or Error.\n\n\u003c!--- \n- In case it will be ever needed, [just in case linking flcompanion](\u003chttps://github.com/Corran-Raisu/FLCompanion\u003e)\n- check Selfpatch for fl-data-discovery later https://github.com/Lazrius/DSLauncher/tree/default/Self%20Patch\n--\u003e\n\n# Contacts\n\n- discord DM: darkwind8\n- discord server lab: https://discord.gg/zFzSs82y3W\n- or open [Pull Request here](https://github.com/darklab8/fl-darkstat/issues) and write there\n- [see up to date contacts here](https://darklab8.github.io/blog/index.html#contacts)\n\nSee anouncements at [Discovery Freelancer forum thread](https://discoverygc.com/forums/showthread.php?tid=187294)\n\n# License\n\nfl-darkstat was originally created by Andrei Novoselov (aka darkwind, aka dd84ai)\nThe work is released under AGPL license, free to modify, copy and etc. as long as you keep code open source and mentioned original author.\nSee [LICENSE](./LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarklab8%2Ffl-darkstat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdarklab8%2Ffl-darkstat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdarklab8%2Ffl-darkstat/lists"}