diff --git a/README.md b/README.md index 18625f4..47cc81c 100644 --- a/README.md +++ b/README.md @@ -1,36 +1,89 @@ # Focus > [!CAUTION] -> Focus is in alpha development stage. Expect breaking changes in every version. +> Focus is in alpha development stage. It is not yet recommended for production use. Please report any bugs or issues you encounter. Focus is an open-source, Kanban-style project management tool, emphasizing simplicity and efficiency. The backend is written in go and the frontend is in svelte. +## Features + +- Kanban-style boards +- RESTful API + +### Planned Features + +- Markdown support +- Real-time collaboration + ## KISS Principles + Adhering to [KISS principles](https://en.wikipedia.org/wiki/KISS_principle), Focus boasts a minimalist, efficient codebase, concentrating on essential features. This streamlined approach minimizes complexity, enhancing maintainability and ease of deployment across different architectures. +Go was chosen for the backend because of its simplicity, speed, and cross-platform support. Svelte was chosen for the frontend because it can be compiled to static HTML, CSS, and JavaScript, which can easily be served by any web server. + Certain features are intentionally excluded, left to specialized tools. These include: + - Authentication - HTTPS - Notifications - Mobile App +HTTPS and authentication have been successfully tested with [traefik](https://traefik.io/) and [authelia](https://www.authelia.com/) middleware but it should work with most reverse proxies and authentication middleware as it is platform-agnostic. + Focus offers a comprehensive RESTful API for extensions and integrations. -## Launching Focus in Debug Mode +## Installation + +### Docker + +The easiest way to run Focus is with Docker. There is three images available: + +- `git.bhasher.com/Bhasher/focus-frontend` for the svelte UI frontend +- `git.bhasher.com/Bhasher/focus-backend` for the go backend +- `git.bhasher.com/Bhasher/focus` for both in one image + +Each image has a `latest` tag and a `vX.Y.Z` tag for each release. The `latest` tag is updated with each release. + +Example `docker-compose.yaml` is available [here](docker-compose.yaml). + +### Desktop App + +Focus is available as a desktop app using [Tauri](https://tauri.app). Automatic releases are only available for Linux as binaries, AppImage, and DEB packages. Download the latest release from the [releases page](https://git.bhasher.com/Bhasher/focus/releases). + +For other platforms, you can build the desktop app yourself using `npm run tauri build` in the `frontend` directory. + +> [!CAUTION] +> The desktop app requires the backend to be running. You can specify the backend URL via the `PUBLIC_BACKEND_URL` environment variable. The default is `http://localhost:3000`. + +```sh +PUBLIC_BACKEND_URL=http://localhost:3000 ./focus +``` + +#### AUR + +```sh +yay -S focus-desktop-bin +``` + +### Debug Mode To run Focus locally, follow these steps: + 1. Clone the repository: + ```sh git clone https://git.bhasher.com/Bhasher/focus ``` 2. Start the backend: + ```sh cd backend go run . ``` 3. Start the frontend: + ```sh cd frontend npm run dev @@ -40,4 +93,4 @@ To run Focus locally, follow these steps: ## License -Focus is under the MIT License. For details, see the [LICENSE](license.md) file. \ No newline at end of file +Focus is under the MIT License. For details, see the [LICENSE](license.md) file. diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..d091d1f --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,16 @@ +services: + focus-backend: + container_name: focus-backend + image: git.bhasher.com/bhasher/focus-backend:latest + ports: + - 3000:3000 + volumes: + - ./data:/data + + focus-frontend: + container_name: focus-frontend + image: git.bhasher.com/bhasher/focus-frontend:latest + ports: + - 8080:80 + environment: + - PUBLIC_BACKEND_URL=http://127.0.0.1:3000