Before contributing to SkyCrypt, make sure you install the development environment first. If you have trouble building SkyCrypt or have any development questions, please don't hesitate to contact us on Discord!
SkyCrypt-Frontend, as the name suggests, is the frontend of SkyCrypt. The backend is a separate repository called SkyCrypt-Backend.
Important
You will need to set up the backend in order to process and get the data for the frontend to show.
-
Clone the repository. You can do this on the command line by running
git clone https://github.com/SkyCryptWebsite/SkyCrypt-Frontend.gitAlternatively, you can use a git GUI like GitHub Desktop or VS Code to clone it.
-
Run
pnpm iin the project directory to install the necessary dependencies. -
Duplicate the
.env.examplefile and rename it to.env. This file contains environment variables that are used by the application. -
Start the server:
- For development, run
pnpm devin the project directory - For production, run the following commands in order:
pnpm buildto build the project.node buildto start the production server, orpnpm previewto use Vite's preview server (not recommended for production deployment).
- You can now open your browser and go to the address listen in the terminal
- For development (
pnpm dev), by default, the address ishttp://localhost:5173. - For preview (
pnpm preview), by default, the address ishttp://localhost:4173 - For production (
node build), by default, the address ishttp://localhost:3000.
If you're not sure what code editor to use VS Code (Visual Studio Code) is a great option. We highly recommend using it as we provide a .vscode folder with recommended extensions and settings which will help you with development. VS Code-like editors, like Cursor, should also work.
VS Code will automatically suggest the extentions we set in the .vscode/extensions.json file. Just go to the Extensions tab, click on the Filter Extensions... button, and select the Recommended filter. Install all the extensions that are listed there.
VS Code will automatically use our recommended settings in the .vscode/settings.json file. Overriding your global settings. If you want to change any of the settings, which we don't recommend, you can do so by changing the settings in the .vscode/settings.json file or deleting the file altogether to use your global settings.
Please ensure that you don't accidentally commit the changes you made to the .vscode/settings.json file if that's not intended for your contribution. You can do this by adding the file to your .gitignore file.
When you are ready to submit your changes, please create a pull request (PR) on GitHub. Make sure to check the following:
- Use Conventional Commits: Follow the Conventional Commits specification for your commit messages.
- Your code is well formatted and follows the project's coding style. Run
pnpm lintto check for linting errors. If there are anyprettiererrors, runpnpm formatto fix them automatically. If there are anyeslintorsvelte-checkerrors, fix them manually. - Your code builds successfully. Run
pnpm buildto check. - Your PR has a clear title and description explaining the changes you made.
- Your PR includes changesets if necessary. If your PR includes changes that should be reflected in the changelog, please include a changeset. You can do this by running
pnpm changesetand following the prompts.
Your commit messages should follow this format:
<type>[optional scope]: <subject>
The scope is optional but recommended for better categorization.
Examples:
feat(stats): add dungeon statistics displayfeat: add new featurefix(ui): correct navbar alignment on mobilefix: resolve rendering issuedocs: update contributing guidelines
Commit Type Reference: See conventionalcommits.org for a quick reference guide.
Releases are created automatically based on the branch:
- dev branch → Creates prereleases (e.g.,
v1.1.0-beta.1) and deploys to cupcake.shiiyu.moe - prod branch → Creates stable releases (e.g.,
v1.1.0) and deploys to sky.shiiyu.moe
Release behavior details:
- Changesets are authored in feature PRs and merged into
dev. - The release workflow commits version/changelog updates directly on the release branch (
devorprod) usinggithub-actions[bot]. - Stable release versioning is proposed via
changeset-release/prodand merged intoprodthrough a PR. - Do not manually maintain
changeset-release/*branches. - Avoid routine manual
prod→devsync merges unless you are intentionally bringing over a stable-only hotfix. - The stable release workflow uses
PAT_TOKENfor GitHub CLI release PR/release operations (required when repository setting "Allow GitHub Actions to create and approve pull requests" is disabled).
The version bump is determined automatically by changesets:
patchpatch version (0.0.1 → 0.0.2)minorminor version (0.0.1 → 0.1.0)majormajor version (0.0.1 → 1.0.0)
The .changeset/*.md files are temporary release inputs:
- If a changeset's entry is already present in a stable (non-beta) section of
CHANGELOG.md, that changeset file should be removed. - Keep unreleased changesets and currently active prerelease changesets.
- Keep
.changeset/README.mdand.changeset/pre.json.
If you find a bug or have a feature request, please open an issue on GitHub or on our Discord server (preferred). When opening an issue, please provide as much information as possible, follow the issue template, and include any relevant screenshots or error messages. This will help us understand the problem and address it more quickly.
By contributing to SkyCrypt, you agree that your contributions will be licensed under the MIT License. This means that your contributions will be open source and available for anyone to use, modify, and distribute.