Lattice
연구를 위한 작업공간
프로젝트 계획·일 정리·결정 피로 해소 등 조직과 집중을 도와주는 도구, Kanby
Whether you're planning a project, organizing your day, feeling overwhelmed with decision fatigue, or confused on where to start, Kanby is the tool you need to stay organized and focused.
생산성TypeScript · AstroGitHub @kimdcottrell온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
An AI-native kanban-style project management app built with Astro, React, Deno, and TailwindCSS / DaisyUI.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗An AI-native kanban-style project management app built with Astro, React, Deno, and TailwindCSS / DaisyUI.
~/.ssh/id_*)make available on your local machineThis is a requirement of this project.
This localdev is available via https://kanary.local.dev, which means you need to setup a reverse proxy.
git clone [email protected]:kimdcottrell/localdev-proxy.git
cd localdev-proxy
# the below line needs to be added to /etc/hosts
127.0.0.1 kanary.local.dev
Install this: https://github.com/FiloSottile/mkcert
Run this:
cd certs
mkcert -install
mkcert -key-file wildcard-local-dev-key.pem -cert-file wildcard-local-dev-cert.pem *.local.dev
docker compose up -d
In Firefox, search for about:networking#dns in the url bar.
Hit the Clear DNS Cache button.
Restart Firefox.
Some company bought the domain name of local.dev, so we need to go out of our way to tell Firefox where to look.
git clone [email protected]:kimdcottrell/kanaryboards.git
cd kanaryboards
Run this on your host machine (not inside the container):
make setup-ssh-agent
This is a one-time setup. It adds an ssh_agent_reload function to your ~/.bash_profile that starts a persistent ssh-agent bound to ~/.ssh/agent.sock, and adds export SSH_AUTH_SOCK="$HOME/.ssh/agent.sock" to your ~/.bashrc. All ~/.ssh/id_* keys are loaded automatically on login.
The dev container bind-mounts that socket instead of copying your keys, so your private keys never leave your machine.
If the socket is ever stale or missing, run
ssh_agent_reloadin your host terminal to restart the agent.
cp .env.sample .env
Open .env and fill in the values indicated as REQUIRED in the comments.
CRON_SECRET is only needed in production. It's the shared secret for POST /api/purge-trash, which permanently deletes Trash tasks older than 30 days, along with the comments of tasks that no longer exist on a board. The caller must send Authorization: Bearer <CRON_SECRET>. The daily schedule isn't set up yet (the plan is a Deno.cron() on Deno Deploy). Until it is, expired Trash tasks are only dropped when a board is loaded.
The dev container disables the Claude Code login prompt, so you must generate an OAuth token on your local machine and paste it into .env.
Run this on your local machine (not inside the container):
claude setup-token
Copy the token that is printed and set it as CLAUDE_CODE_OAUTH_TOKEN in this project's .env file (which should be based off of .env.sample).
If the token stops working, reset it on your local machine with:
rm -rf ~/.claude ~/.claude.json && claude setup-token
Requirements on your local machine:
make setup-ssh-agent must have been run at least once~/.bash_profile, but if the socket is missing, run ssh_agent_reload in your host terminal before opening the containerVerify it is working inside the container with:
ssh -T [email protected]
You should see: Hi <username>! You've successfully authenticated…
Extra details you may be wondering about
Git identity (name & email): The VS Code Git extension automatically forwards your local machine's user.name and user.email from ~/.gitconfig into the container. You do not need to configure git identity inside the container.
Why openssh-client is in the Dockerfile and not a devcontainer feature: Dev container features run their install scripts as root after the image is built, but because the Dockerfile sets USER deno, the feature scripts can land files with the wrong ownership. Installing openssh-client directly in the Dockerfile (before the USER switch) sidesteps this.
The dev container mounts .devcontainer/home/.bashrc and .devcontainer/home/.zshrc directly into the container as ~/.bashrc and ~/.zshrc. Both files are gitignored — they're personal to your machine and won't affect other contributors.
The postAttachCommand in devcontainer.json copies the sample files into place the first time if they don't exist or are empty, so you'll get a sensible default prompt without any extra steps.
Sample configs are provided as a starting point:
| Sample file | What it includes |
|---|---|
.devcontainer/home/.sample_bashrc | Colored prompt with git branch, vivid LS colors, GitHub SSH check |
.devcontainer/home/.sample_zshrc | oh-my-zsh with the robbyrussell theme |
To use a sample, copy it to the real file before opening the container:
cp .devcontainer/home/.sample_bashrc .devcontainer/home/.bashrc
# and/or
cp .devcontainer/home/.sample_zshrc .devcontainer/home/.zshrc
Edit either file freely — your changes stay local and are picked up the next time the container starts.
Open the project in VS Code and when prompted, click "Rebuild Container". VS Code will build the Docker image and start the services defined in compose.yaml (the app container plus its Playwright and MCP server companions).
Inside the container terminal:
deno task dev
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗