Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Acode Development Container - Standalone Docker Build
#
# This Dockerfile is for MANUAL Docker builds (docker build/run).
# Usage:
# docker build -t acode-dev .devcontainer/
# docker run -it -v $(pwd):/workspaces/acode acode-dev

FROM mcr.microsoft.com/devcontainers/java:1-21-bullseye

ARG ANDROID_PLATFORM=35
ARG ANDROID_BUILD_TOOLS=35.0.0
ARG CMDLINE_TOOLS_VERSION=11076708
ARG NODE_VERSION=22
ARG GRADLE_VERSION=8.11

ENV ANDROID_HOME=/opt/android-sdk
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV GRADLE_HOME=/opt/gradle
ENV PATH="${PATH}:${ANDROID_HOME}/cmdline-tools/latest/bin:${ANDROID_HOME}/platform-tools:${GRADLE_HOME}/bin"

RUN apt-get update && apt-get install -y --no-install-recommends \
wget \
unzip \
&& rm -rf /var/lib/apt/lists/*

# Install Gradle
RUN wget -q "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" -O /tmp/gradle.zip \
&& unzip -q /tmp/gradle.zip -d /opt \
&& rm /tmp/gradle.zip \
&& ln -s /opt/gradle-${GRADLE_VERSION} ${GRADLE_HOME}

# Install fnm and Node.js
ENV FNM_DIR=/usr/local/fnm
ENV PATH="${FNM_DIR}:${PATH}"
RUN curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir "${FNM_DIR}" --skip-shell \
&& eval "$(${FNM_DIR}/fnm env)" \
&& fnm install ${NODE_VERSION} \
&& fnm default ${NODE_VERSION} \
&& npm install -g pnpm

ENV PATH="${FNM_DIR}/aliases/default/bin:${PATH}"

# Install Android SDK
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools \
&& cd ${ANDROID_HOME}/cmdline-tools \
&& wget -q "https://dl.google.com/android/repository/commandlinetools-linux-${CMDLINE_TOOLS_VERSION}_latest.zip" -O cmdline-tools.zip \
&& unzip -q cmdline-tools.zip \
&& rm cmdline-tools.zip \
&& mv cmdline-tools latest \
&& yes | ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --licenses 2>/dev/null || true \
&& ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager --update \
&& ${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager \
"platform-tools" \
"platforms;android-${ANDROID_PLATFORM}" \
"build-tools;${ANDROID_BUILD_TOOLS}"

WORKDIR /workspaces/acode

LABEL maintainer="Acode Foundation"
LABEL description="Development environment for building Acode - Code Editor for Android"
75 changes: 37 additions & 38 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -1,43 +1,42 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/java
{
"name": "Java",
// Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "mcr.microsoft.com/devcontainers/java:1-21-bullseye",
"name": "Acode Development",
"image": "mcr.microsoft.com/devcontainers/java:1-21-bullseye",

"features": {
"ghcr.io/devcontainers/features/java:1": {
"installGradle": true,
"installGroovy": false,
"installMaven": false,
"installAnt": false,
"version": "21",
"jdkDistro": "ms",
"gradleVersion": "latest",
"mavenVersion": "none"
},
"ghcr.io/nordcominc/devcontainer-features/android-sdk:1": {
"platform": "35",
"build_tools": "35.0.0"
},
"ghcr.io/devcontainers/features/node:1": {
"nodeGypDependencies": false,
"installYarnUsingApt": false,
"version": "lts",
"pnpmVersion": "latest",
"nvmVersion": "latest"
}
}
"features": {
"ghcr.io/devcontainers/features/java:1": {
"installGradle": true,
"installGroovy": false,
"installMaven": false,
"installAnt": false,
"version": "21",
"jdkDistro": "ms",
"gradleVersion": "latest"
},
"ghcr.io/nordcominc/devcontainer-features/android-sdk:1": {
"platform": "35",
"build_tools": "35.0.0"
},
"ghcr.io/devcontainers/features/node:1": {
"nodeGypDependencies": false,
"installYarnUsingApt": false,
"version": "lts",
"pnpmVersion": "latest",
"nvmVersion": "latest"
}
},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
"postCreateCommand": "pnpm run setup",

// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "java -version",

// Configure tool-specific properties.
// "customizations": {},

// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
"customizations": {
"vscode": {
"extensions": ["biomejs.biome", "redhat.java"],
"settings": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "biomejs.biome",
"[java]": {
"editor.defaultFormatter": "redhat.java"
}
}
}
}
}
24 changes: 24 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Dependencies
node_modules/
.pnpm-store/

# Build outputs
platforms/
plugins/
www/css/build/
www/js/build/

# IDE
.vscode/
.idea/

# Git
.git/
.gitignore

# Misc
*.log
*.apk
*.aab
.DS_Store
Thumbs.db
173 changes: 173 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
# Contributing to Acode

Thank you for your interest in contributing to Acode! This guide will help you get started with development.

## Quick Start Options

### Option 1: DevContainer (Recommended)

1. Install the [Dev Containers extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) in VS Code or other editors that support DevContainers.

2. Clone and open the repository:
```bash
git clone https://github.com/Acode-Foundation/Acode.git
code Acode
```

3. When VS Code prompts "Reopen in Container", click it
- Or use Command Palette (Cmd/Ctrl+Shift+P) → "Dev Containers: Reopen in Container"

4. Wait for the container to build (~5-10 minutes first time, subsequent opens are instant)

5. Once ready, build the APK:
```bash
pnpm run build paid dev apk
```

> Use any package manager (pnpm, bun, npm, yarn, etc.)

### Option 2: Docker CLI (For Any Editor)

If your editor doesn't support DevContainers, you can use Docker directly:

```bash
# Clone the repository
git clone https://github.com/Acode-Foundation/Acode.git
cd Acode

# Build the Docker image from our Dockerfile
docker build -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 d
```

**Keep container running for repeated use:**
```bash
# 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-dev
```

---

## 🛠️ Manual Setup (Without Docker)

If you prefer not to use Docker at all:

### Prerequisites

| Requirement | Version |
|------------|---------|
| **Node.js** | 18+ (22 recommended) |
| **pnpm** or **bun** | Latest |
| **Java JDK** | 17+ (21 recommended) |
| **Android SDK** | API 35 |
| **Gradle** | 8.x |

### Environment Setup

Add these to your shell profile (`~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish`):

**macOS:**
```bash
export ANDROID_HOME="$HOME/Library/Android/sdk"
export PATH="$PATH:$ANDROID_HOME/platform-tools:$ANDROID_HOME/cmdline-tools/latest/bin"
```

**Linux:**
```bash
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](https://cordova.apache.org/docs/en/latest/guide/platforms/android/index.html).

### Build Steps

```bash
# 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 d
```

The APK will be at: `platforms/android/app/build/outputs/apk/debug/app-debug.apk`


## 📝 Contribution Guidelines

### Before Submitting a PR

1. **Fork** the repository and create a branch from `main`
2. **Make changes** - keep commits focused and atomic
3. **Check code quality:**
```bash
pnpm run check
```
4. **Test** on a device or emulator if possible

### Pull Request Checklist

- [ ] Clear description of changes
- [ ] Reference to related issue (if applicable)
- [ ] Screenshots/GIFs for UI changes
- [ ] Passing CI checks

### Code Style

We use [Biome](https://biomejs.dev/) for linting and formatting:
- Run `pnpm run check` before committing
- Install the Biome VS Code extension for auto-formatting

### Commit Messages

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
```

## 🌍 Adding Translations

1. Create a JSON file in `src/lang/` (e.g., `fr-fr.json` for French)
2. Add it to `src/lib/lang.js`
3. Use the translation utilities:
```bash
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
```

## 🔌 Plugin Development

To create plugins for Acode:
- [Plugin Starter Repository](https://github.com/Acode-Foundation/acode-plugin)
- [Plugin Documentation](https://docs.acode.app/)
1 change: 1 addition & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading