📁 My Files
| Name | Size | Uploaded |
|---|
📦 No files yet — upload one above!
📝 Notes
📝 No notes yet — create your first one!
✅ Todo List
🎉 Nothing to do. Enjoy!
📦 Repositories
🔍 No repositories found.
General
Collaborators
Grant other panel accounts access: read (view, open issues), write (edit code, merge), admin (manage collaborators & webhooks).
Webhooks
Receive a JSON push event at your URL whenever commits land (via git push or web edits). Optionally signed with HMAC-SHA256.
🔧 Pipeline (run on push)
A shell script that runs in a fresh clone every time commits land on the default branch — via git push, web edits or pull-request merges. See the run log and status below. Set it to something like pytest || python tests.py.
Recent runs
Danger zone
Deleting a repository removes its files, commits, releases and issues forever.
❓ Help & How-To
👤 Getting started
This panel is your personal dashboard for files, notes, todos and repositories — everything lives on your own machine and is served through this one app. The current platform version is shown in the top-right corner (and at /api/health).
- First run: use the Register tab to create the first account. The first account automatically becomes the admin.
- More accounts: after the first user exists, registration is closed. The admin can create additional users from the 👥 Users tab.
- Login: enter your username and password. Sessions use a secure token that expires after 12 hours — just log in again when asked.
- Navigate: use the buttons in the top bar to switch between Files, Notes, Todos, Repos and this Help page.
🔒 Privacy & accounts
Every account is fully isolated. Each user only ever sees their own data:
- Your files, notes, todos and repositories are visible only to you.
- Repositories are private. Other users (even the admin) cannot browse, download, star or modify your repos unless you share them, and they never appear in other users' lists. Requests for a repo you cannot access are treated as if it does not exist (404).
- Collaborators you add get exactly the access you grant: read (view/clone/comment), write (edit code, push, merge PRs) or admin (manage access & webhooks). Only the owner can rename or delete the repo.
- All data access requires a logged-in session; passwords are stored only as bcrypt hashes.
- Share files with other PCs by uploading them here and downloading them after logging in from the other machine.
📁 Files
- Upload: click Upload File or drag & drop files anywhere onto the Files view.
- Download / Delete: use the buttons next to each file.
- Files are stored on disk under random names and are only ever served to the account that uploaded them.
📝 Notes
- Click + New Note, write a title and content, then Save.
- Click an existing note to open and edit it, or delete it from the editor.
- Note content supports markdown (headings, lists, code blocks, links and more).
✅ Todos
- Type a task and press Add (or Enter).
- Click the checkbox to mark a task done; use the delete button to remove it.
📂 Repositories
Repositories are real git repositories: GitHub-style project folders you can clone, push and pull with VSCode or any git client. Files live on disk under data/repos/<user>/<repo>/.
- Create: click + New Repository, pick a name (letters, digits,
.-_), and add a description, topics, homepage and license. AREADME.mdis created for you automatically. - Clone from your editor: every repo page shows the
git clonecommand with a copy button. Git prompts for your panel username & password, then push/pull work exactly like GitHub. - Browse: click a repo to open it. The Code tab shows the file tree with the last commit per file; the
README.mdis rendered at the bottom. - Branches: the branch selector in the repo header lists all branches, switches the default one, and lets you create or delete branches. Every branch is pushable/pullable from git.
- Commits: click any commit to see its message, author and a full per-file diff with +/− line counts. File viewers have History and Blame buttons.
- Pull requests: the Pull Requests tab opens a PR from one branch into another. Review the commits and diff, comment, then Merge (merge commit or fast-forward). Conflicts are reported for you to resolve in git.
- Collaborators: in Settings you can share the repo with other panel accounts as Read, Write or Admin. Read users can clone but not push; Write users can edit and merge; Admins manage access & webhooks. Only the owner can rename or delete the repo.
- Webhooks: in Settings, add URLs to receive a JSON
pushevent whenever commits land (git push, web edits or merges), optionally signed with HMAC-SHA256. Last delivery status is shown. - Fork: click 🎽 Fork on any repo you can see to copy it into your account with its full history and branches — then edit it independently. The copy shows a "forked from" chip.
- Pipeline: in Settings, write a shell script that runs in a fresh clone every time commits land on the default branch (push, web edit or merge). Runs show status and logs right below.
- Search & filter: use the search box, topic filter and sorting on the repository list. Tick Starred to show only repos you starred.
🎽 Fork / copy a repository
Forking gives you your own private copy of any repository you can access (your own, or one shared with you).
- Open the repo and click Fork, then confirm the name (default:
<name>-fork). - Your copy keeps the full git history and all branches, plus the description, topics and license.
- The fork is a completely independent repository: edit, push, branch and release in it without affecting the original.
- A forked from chip in the header shows where it came from.
🔧 Pipeline (run on push)
Each repository can run one shell script automatically whenever commits land on its default branch — a lightweight CI.
- Configure: in the repo's Settings → Pipeline, paste a script (e.g.
python -m pytest tests/) and tick Enable the pipeline. Owners and admin collaborators can configure it. - When it runs: after every
git pushto the default branch, every web-editor commit, and every pull-request merge. - Where it runs: in a fresh clone of your repo, not in the live files. The script's exit code decides success or failure (exit 0 = success).
- Environment:
$CP_REPO(path to the clone),$GIT_COMMIT,$GIT_BRANCH,CI=true. Output is captured. - Results: Recent runs appear under the script with status, commit, duration and the full log (click to expand). The script also runs with the same panel permissions as the server, so treat it like any script you would run on this machine.
📄 Code, editing & commits
- Click any file to open a syntax-highlighted viewer (Python, JS/TS, JSON, HTML, CSS, SQL, YAML, Go, Rust, C/C++, Java, Ruby, PHP, Swift, Kotlin and more).
- Press Edit to change the file, type a commit message and hit Commit changes. The save is recorded in the Commits tab like a real git commit.
- Use + Add file and + Folder to create new files and directories, then edit them. Deleting a file or folder is also recorded as a commit.
- Every change bumps the repo's "pushed" time shown on the repository cards.
⬇️ Download & upload
The panel works with plain HTTP endpoints — no git client needed:
- Pull-style: the Download button on any file fetches the raw file, and Download ZIP in a repo's Code tab packs the whole source tree into a GitHub-style archive.
- Push-style: editing files in the browser, adding folders and publishing releases are the "push" operations — they write real files on disk and create commit history entries.
- Files uploaded for sharing live in the Files tab; release packages live in the repo's Releases tab.
🏷 Releases
- Open a repo, go to Releases and click + New Release.
- Give it a tag/version (e.g.
v1.2.0), an optional name, markdown notes, and optionally attach a package (.zip,.tar.gz,.whl,.py,.js,.7z,.rar,.txt,.md). - Download counts are tracked. Like everything else on the panel, releases are visible only to you.
🚩 Issues
- Open issues in a repo's Issues tab to track bugs and ideas; each gets an auto-incrementing number.
- Add markdown comments to discuss an issue, and close or reopen it with the toggle button.
- The repo owner (you) can delete issues and comments.
🚀 Deploying to a server (separate Deployer app)
Deploying this panel to a remote Linux server is handled by the standalone Deployer app — it is no longer a tab inside this panel:
- Where: the Deployer has its own UI, usually at
http://localhost:10001(start it with./run-deployer.sh). - Unlock: it asks for a deployer token on first use — the token is
printed in the deployer's startup console and stored in
deployer/.env. - What it does: installs packages, uploads the panel (platform + deployer), creates systemd services, configures nginx and requests a Let's Encrypt certificate — with a live console you can watch and cancel. See the README for the full details.
⚠️ Limits & tips
- Upload cap: files and release packages are limited to 200 MB each.
- Blocked uploads: executable types (
.exe,.sh,.bat, ...) are refused for the Files area. - Repo names: 1-64 characters, letters/digits/dot/dash/underscore, and not a reserved word such as
new,settings,admin,api. - Login protection: after 10 failed login/register attempts in 5 minutes your IP is paused for a while.
- Tip: set a fixed
SECRET_KEYin.envso sessions survive server restarts (see README). - Tip: the first account is the admin — keep its password safe. Admins manage users but still cannot see other users' data.
👥 User Management
Create new user
| Username | Role | Created |
|---|