Made with Node.js, Express, Prisma, written in Typescript.
Made with MUI's components, React and create-react-app.
-
Fork this project
-
Make sure your NodeJS and pnpm versions are up to date
-
If you are using Windows, make sure to use Git Bash as your terminal
-
Setup your local Postgres databases (labrute + etwin)
-
Copy
.env.sampleto.envand adapt the variables -
Optional: Create an
eternaltwin.local.tomlconfig 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 file) -
Install dependencies:
pnpm i -
Generate the DB schema:
pnpm db:sync:dev -
Compile the sources:
pnpm compile -
Seed your database (optional, but useful for development):
pnpm db:seed -
Make sure to initialize your etwin database by running
pnpm eternaltwin db sync -
Start the server, client and etwin local server with
pnpm 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
- Run
pnpm db:sync:dev
-
Edit
server/src/seed.ts -
Run
pnpm db:seed
If you encounter issues running pnpm scripts, change your config with the following commands:
# This will allow setting env variables in the scripts section of package.json, which is required for some scripts to work properly
pnpm config set shellEmulator true
# This will set the script shell to git bash, which prevents issues with the default cmd.exe on windows
# Adapt the path to your git bash executable if it's different
pnpm config set scriptShell "C:\\Program Files\\git\\bin\\bash.exe"-
Set the environment variables
-
Install dependencies:
pnpm install --frozen-lockfile -
Compile sources:
pnpm build -
Sync your database with
pnpm db:sync:prod -
Start the server with
pnpm start -
Deploy the frontend using a static server of your choice like Nginx
-
Environment variables can be overriden without restarting the server by setting them in the database
Configtable
- Make sure to run
pnpm core:exportafter creating/deleting files in thecorepackage, as it will update the indexes accordingly
-
Requirements: install ffmpeg on your Pc, node v18 minimum
-
Run the script :
pnpm sfx:generateif you use git bash andpnpm sfx:wsl:generateif you use WSL
- After editing any of the main Google accessible pages, run
pnpm sitemap:generateto update the sitemap
├── 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
└── ...
This project uses a dual licensing structure:
- Code (TypeScript, JavaScript, configuration files, etc.): Licensed under PolyForm Noncommercial 1.0.0
- Assets (images, sprites, textures, sounds, and other media): Licensed under CC 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.
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.