https://github.com/zenoo/labrute
Typescript remake of http://labrute.fr
https://github.com/zenoo/labrute
eternal-twin labrute motion-twin mybrute
Last synced: 3 days ago
JSON representation
Typescript remake of http://labrute.fr
- Host: GitHub
- URL: https://github.com/zenoo/labrute
- Owner: Zenoo
- License: other
- Created: 2023-01-19T19:12:46.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2026-04-26T10:52:09.000Z (25 days ago)
- Last Synced: 2026-04-26T11:26:10.551Z (25 days ago)
- Topics: eternal-twin, labrute, motion-twin, mybrute
- Language: TypeScript
- Homepage: https://brute.eternaltwin.org/
- Size: 337 MB
- Stars: 33
- Watchers: 3
- Forks: 43
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
[](https://crowdin.com/project/labrute)

## Backend
> Made with [Node.js](https://nodejs.org/en/), [Express](https://expressjs.com/), [Prisma](https://www.prisma.io/), written in [Typescript](https://www.typescriptlang.org/).
## Frontend
> Made with [MUI's](https://mui.com/) components, [React](https://reactjs.org/) and [create-react-app](https://facebook.github.io/create-react-app/).
## Contributing
- Fork this project
- Make sure your NodeJS and yarn versions are up to date
- If you are using Windows, make sure to use [Git Bash](https://gitforwindows.org/) as your terminal
- Setup your local Postgres databases (labrute + etwin)
- Copy `.env.sample` to `.env` and adapt the variables
- Optional: Create an `eternaltwin.local.toml` config file for Eternaltwin. You don't need it to start LaBrute, but it may be useful for more advanced usage. (An example is provided in the [eternaltwin.local.toml.sample](eternaltwin.local.toml.sample) file)
- Install dependencies: `yarn install` (This should also setup your database from the `schema.prisma` file and the migrations)
- Make sure to initialize your etwin database by running `yarn eternaltwin db sync`
- Start the server, client and etwin local server with `yarn dev`
- **Important**: Disable your adblocker for the local development environment, as it may block fingerprint requests
- Commit and push your changes
- Create a pull request to merge your fork into `main`
### How to sync your database with your new Prisma schema
- Run `yarn db:sync:dev`
### How to seed your database
- Edit `server/src/seed.ts`
- Run `yarn db:seed`
## Deployment
- Set the environment variables
- Install dependencies: `npm ci` (This should also compile and built everything needed)
- Sync your database with `yarn db:sync:prod`
- Start the server with `yarn start`
- Deploy the frontend using a static server of your choice like [Nginx](https://www.nginx.com/)
- Environment variables can be overriden without restarting the server by setting them in the database `Config` table
## Editing `core`
- Make sure to run `yarn core:export` after creating/deleting files in the `core` package, as it will update the indexes accordingly
## Generate the sound spritesheet after editing a sound using audiosprite
- Requirements: install ffmpeg on your Pc, node v18 minimum
- Run the script : `yarn sfx:generate` if you use git bash and `yarn sfx:wsl:generate` if you use WSL
## Sitemap
- After editing any of the main Google accessible pages, run `yarn sitemap:generate` to update the sitemap
## File Structure
```
├── client
│ ├── build # Compiled frontend
│ ├── public
│ │ ├── i18n # Folder containing all the translations
│ │ └── ... # Any other static file
│ └── src
│ ├── components # Reusable components
│ ├── hooks # React hooks
│ ├── layouts # Layouts
│ ├── theme # Theme variables
│ ├── utils # Utility functions
│ └── views # Views
├── core # Shared ressourcs for both front and back end
│ ├── src
├── prisma # Prisma types definitions for both front and back end
│ ├── src
└── server # Back end
├── prisma # DB
└── src
├── controllers # Controllers
├── utils # Utility functions
└── ...
```
## 📜 License
This project uses a **dual licensing structure**:
- **Code** (TypeScript, JavaScript, configuration files, etc.): Licensed under [**PolyForm Noncommercial 1.0.0**](LICENSE)
- **Assets** (images, sprites, textures, sounds, and other media): Licensed under [**CC BY-NC-SA 4.0**](https://creativecommons.org/licenses/by-nc-sa/4.0/)
Both licenses **prohibit commercial use**. You are free to use, modify, and distribute this project for personal, educational, or non-profit purposes, but any commercial use is forbidden.
## ⚠️ Web3/Crypto/Blockchain Use Explicitly Prohibited
**This project is NOT available for use in any Web3, cryptocurrency, blockchain, NFT, or distributed ledger technology projects.**
Any use in connection with cryptocurrencies, blockchain technologies, NFTs, DeFi, DAOs, or any other web3-related projects is **strictly forbidden**. This includes but is not limited to:
- Cryptocurrency exchanges, wallets, or payment systems
- NFT marketplaces, minting platforms, or collections
- Blockchain networks or distributed ledger implementations
- Decentralized finance (DeFi) protocols or applications
- Decentralized autonomous organizations (DAOs)
- Smart contracts or dApps on any blockchain
- Any project that integrates with, promotes, or facilitates cryptocurrency or blockchain technology
Violation of this restriction will be considered a breach of the license terms.