focus/README.md

106 lines
3.5 KiB
Markdown
Raw Normal View History

2023-12-29 13:27:39 +01:00
# Focus
> [!CAUTION]
2024-01-14 01:42:04 +01:00
> Focus is in alpha development stage. It is not yet recommended for production use. Please report any bugs or issues you encounter.
2023-12-29 13:27:39 +01:00
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.
2024-01-14 01:42:04 +01:00
The official source code repository is at [git.bhasher.com/Bhasher/focus](https://git.bhasher.com/Bhasher/focus). It runs the CI pipeline and hosts the Docker images and releases. However, a mirror is available at [github.com/BhasherBEL/focus](https://github.com/BhasherBEL/focus).
## Features
- Kanban-style boards
2024-01-18 02:38:29 +01:00
- Customizable views
2024-01-14 01:42:04 +01:00
- RESTful API
2024-01-18 02:38:29 +01:00
- Full markdown support
- Desktop app
- Docker images
- Mobile-friendly
2024-01-14 01:42:04 +01:00
### Planned Features
- Real-time collaboration
2023-12-29 13:27:39 +01:00
## KISS Principles
2024-01-14 01:42:04 +01:00
2023-12-29 13:27:39 +01:00
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.
2024-01-14 01:42:04 +01:00
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.
2023-12-29 13:27:39 +01:00
Certain features are intentionally excluded, left to specialized tools. These include:
2024-01-14 01:42:04 +01:00
2023-12-29 13:27:39 +01:00
- Authentication
- HTTPS
- Notifications
- Mobile App
2024-01-14 01:42:04 +01:00
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.
2023-12-29 13:27:39 +01:00
Focus offers a comprehensive RESTful API for extensions and integrations.
2024-01-14 01:42:04 +01:00
## 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
```
2024-01-14 02:33:46 +01:00
### AUR
2024-01-14 01:42:04 +01:00
```sh
2024-01-14 02:33:46 +01:00
yay -S focus-desktop-bin # Desktop app
yay -S focus-server-git # Server
2024-01-14 01:42:04 +01:00
```
2024-01-14 13:49:03 +01:00
The server can then be started with `focus-server` or `systemctl start focus-server.service` and the client with `focus`.
2024-01-14 02:33:46 +01:00
2024-01-14 01:42:04 +01:00
### Debug Mode
2023-12-29 13:27:39 +01:00
To run Focus locally, follow these steps:
2024-01-14 01:42:04 +01:00
2023-12-29 13:27:39 +01:00
1. Clone the repository:
2024-01-14 01:42:04 +01:00
2023-12-29 13:27:39 +01:00
```sh
git clone https://git.bhasher.com/Bhasher/focus
```
2. Start the backend:
2024-01-14 01:42:04 +01:00
2023-12-29 13:27:39 +01:00
```sh
cd backend
go run .
```
3. Start the frontend:
2024-01-14 01:42:04 +01:00
2023-12-29 13:27:39 +01:00
```sh
cd frontend
npm run dev
```
4. Access Focus at http://localhost:5000. The API is at http://localhost:3000.
## License
2024-01-14 01:42:04 +01:00
Focus is under the MIT License. For details, see the [LICENSE](license.md) file.