Thank you for your interest in contributing to Acode! This guide will help you get started with development.
-
Install the Dev Containers extension in VS Code or other editors that support DevContainers.
-
Clone and open the repository:
git clone https://github.com/Acode-Foundation/Acode.git code Acode
-
When VS Code prompts "Reopen in Container", click it
- Or use Command Palette (Cmd/Ctrl+Shift+P) → "Dev Containers: Reopen in Container"
-
Wait for the container to build (~5-10 minutes first time, subsequent opens are instant)
-
Once ready, build the APK:
pnpm run build paid dev apk
Use any package manager (pnpm, bun, npm, yarn, etc.)
Note
If you try to use Podman, Kindly note that it would not work properly until containers/buildah#5845 is merged/implemented in Podman.
If your editor doesn't support DevContainers, you can use Docker directly:
# Clone the repository
git clone https://github.com/Acode-Foundation/Acode.git
cd Acode
# Build the Docker image from our Dockerfile
docker build --target standalone -t acode-dev .devcontainer/
# Run the container with your code mounted
docker run -it --rm \
-v "$(pwd):/workspaces/acode" \
-w /workspaces/acode \
acode-dev \
bash
# Inside the container, run setup and build
# bun run setup && bun run build paid dev apk
pnpm run setup
pnpm run build paid dev apk # or pnpm run build p dKeep container running for repeated use:
# Start container in background
docker run -d --name acode-dev \
-v "$(pwd):/workspaces/acode" \
-w /workspaces/acode \
acode-dev \
sleep infinity
# Execute commands in the running container
docker exec -it acode-dev bash -c "pnpm run setup"
docker exec -it acode-dev pnpm run build paid dev apk
# Stop and remove when done
docker stop acode-dev && docker rm acode-devIf you prefer not to use Docker at all:
| Requirement | Version |
|---|---|
| Node.js | 18+ (22 recommended) |
| pnpm or bun | Latest |
| Java JDK | 17+ (21 recommended) |
| Android SDK | API 35 |
| Gradle | 8.x |
Add these to your shell profile (~/.bashrc, ~/.zshrc, or ~/.config/fish/config.fish):
macOS:
export ANDROID_HOME="$HOME/Library/Android/sdk"
export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin"Linux:
export ANDROID_HOME="$HOME/Android/Sdk"
export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin"Some more environment variables, check cordova docs.
# Clone the repository
git clone https://github.com/Acode-Foundation/Acode.git
cd Acode
# Install dependencies and set up Cordova
pnpm run setup
# Build the APK
pnpm run build paid dev apk # or pnpm run build p dThe APK will be at: platforms/android/app/build/outputs/apk/debug/app-debug.apk
- Fork the repository and create a branch from
main - Make changes - keep commits focused and atomic
- Check code quality:
pnpm run check
- Test on a device or emulator if possible
- Clear description of changes
- Reference to related issue (if applicable)
- Screenshots/GIFs for UI changes
- Passing CI checks
We use Biome for linting and formatting:
- Run
pnpm run checkbefore committing - Install the Biome VS Code extension for auto-formatting
Use clear, descriptive messages:
feat: add dark mode toggle to settings
fix: resolve crash when opening large files
docs: update build instructions
refactor: simplify file loading logic
- Create a JSON file in
src/lang/(e.g.,fr-fr.jsonfor French) - Add it to
src/lib/lang.js - Use the translation utilities:
pnpm run lang add # Add new string pnpm run lang remove # Remove string pnpm run lang search # Search strings pnpm run lang update # Update translations
Note
Acode uses SVG and converts them into a font family, to be used inside the editor and generally for plugin devs.
Plugin-specific icons SHOULD NOT be added into the editor. Only generally helpful icons SHOULD BE added
Many font editing software and web-based tools exist for this purpose. Some of them are listed below.
| Name | Platform |
|---|---|
| https://icomoon.io/ | Free (Web-Based, PWA-supported, Offline-supported) |
| https://fontforge.org/ | Open-Source (Linux, Mac, Windows) |
- Download the
code-editor-icon.icomoon.jsonfile from https://github.com/Acode-Foundation/Acode/tree/main/utils - Go to https://icomoon.io/ > Import
- Import the
code-editor-icon.icomoon.jsondownloaded (in step 1) - All icons will be displayed after importing.
- Import the SVG icon created/downloaded to be added to the Font Family.
- On the right side, press enable Show Characters & Show Names to view the Unicode character & Name for that icon.
- Provided the newly added SVG icon with a name (in the name box).
- Repeat Step 5 and Step 7 until all needed new icons are added.
- Press the export icon from the top left-hand side.
- Press the download button, and a zip file will be downloaded.
- Go to the Projects section of icomoon, uncollapse/expand the Project named
code-editor-iconand press the save button (this downloads the project file named:code-editor-icon.icomoon.json)
- Extract the downloaded zip file; navigate to the
fontsfolder inside it. - Rename
code-editor-icon.ttftoicons.ttf. - Copy & paste the renamed
icons.ttfinto https://github.com/Acode-Foundation/Acode/tree/main/src/res/icons - Copy and paste the
code-editor-icon.icomoon.jsonfile (downloaded in the adding icons steps) onto https://github.com/Acode-Foundation/Acode/tree/main/utils (yes, replace it with the newer one; we downloaded!) - Commit the changes ON A NEW branch (by following: Commit Messages guide)
To create plugins for Acode: