Focus is an open-source, Kanban-style project management tool, emphasizing simplicity and efficiency.
Go to file
Brieuc Dubois d5feb492e1 Fix Menu z-index 2024-01-24 01:08:58 +01:00
.gitea/workflows PKGBUILD in CI 2024-01-14 23:47:33 +01:00
backend Fix backend websocket concurrent subscriptions issue 2024-01-21 01:16:23 +01:00
ci PKGBUILD in CI 2024-01-14 23:47:33 +01:00
frontend Fix Menu z-index 2024-01-24 01:08:58 +01:00
.dockerignore Image with backend & frontend 2024-01-10 00:46:45 +01:00
.gitignore frontend 2023-12-28 01:19:29 +01:00
Dockerfile Image with backend & frontend 2024-01-10 00:46:45 +01:00
LICENSE.md README & LICENSE 2023-12-29 13:27:39 +01:00
README.md Prepare v0.4.0 2024-01-18 02:38:29 +01:00
docker-compose.yaml Rewrite README 2024-01-14 01:46:02 +01:00
run.sh Update run.sh for merged dockerfile 2024-01-12 13:39:07 +01:00

README.md

Focus

[!CAUTION]
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.

The official source code repository is at 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.

Features

  • Kanban-style boards
  • Customizable views
  • RESTful API
  • Full markdown support
  • Desktop app
  • Docker images
  • Mobile-friendly

Planned Features

  • Real-time collaboration

KISS Principles

Adhering to KISS principles, 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 and authelia 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.

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.

Desktop App

Focus is available as a desktop app using Tauri. Automatic releases are only available for Linux as binaries, AppImage, and DEB packages. Download the latest release from the releases page.

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.

PUBLIC_BACKEND_URL=http://localhost:3000 ./focus

AUR

yay -S focus-desktop-bin  # Desktop app
yay -S focus-server-git   # Server

The server can then be started with focus-server or systemctl start focus-server.service and the client with focus.

Debug Mode

To run Focus locally, follow these steps:

  1. Clone the repository:

    git clone https://git.bhasher.com/Bhasher/focus
    
  2. Start the backend:

    cd backend
    go run .
    
  3. Start the frontend:

    cd frontend
    npm run dev
    
  4. Access Focus at http://localhost:5000. The API is at http://localhost:3000.

License

Focus is under the MIT License. For details, see the LICENSE file.