🎉 First off, thanks for taking the time and your effort to make Ferdium better! 🎉
- Contributing to ferdium-server
This project and everyone participating in it is governed by the Ferdium Code of Conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
For the moment, Ferdium's development is just getting started but all contributions (code, testing, bug-logging, feature-suggestions) are highly appreciated.
As a basic rule, before filing issues, feature requests or anything else, please take a look at the issues and check if this has not already been reported by another user. If so, engage in the already existing discussion.
Please make sure you are conforming to the engines
requirements used by the developers/contributors as specified in the package.json
and recipes/package.json
files.
Currently, these are the combinations of system dependencies that work for MacOS/Linux/Windows:
$ jq --null-input '[inputs.engines] | add' < ./package.json < ./recipes/package.json
{
"node": "20.18.0",
"pnpm": "9.12.3",
"python": "3.12.7"
}
The version 2.23.0 for Git is working fine for development. You can then use the console from Git to do the development procedure.
git clone https://github.com/ferdium/ferdium-server.git
cd ferdium-server
git submodule update --init --recursive --remote --rebase --force
It is important you execute the last command to get the required submodules (recipes).
- Run the following command to install all dependencies, and link sibling modules with ferdium-server.
pnpm i
- Copy the
.env.example
file into.env
and change the values to match your system.
cp .env.example .env
Note:
- Have env DB_SSL=true only if your database is postgres and it is hosted online on platforms like GCP, AWS, etc
- You will have to provide a value for
API_KEY
that is at least 16 characters long.
- If using sqlite for local development, create the database directory (whatever is set to
DATA
in.env
)
mkdir -p data
- Run the database migrations with
node ace migration:refresh
- To get the full functionality, you will need to have an SMTP server running for local development.
pnpm start --dev
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Limit the first line to 72 characters or less
- Reference issues and pull requests liberally after the first line
- When only changing documentation, include
[ci skip]
in the commit description
- Please use
lint
andlint:fix
and the defined rules to maintain a consistent style