Skip to content

Commit

Permalink
Merge pull request #69 from moiSentineL/docs
Browse files Browse the repository at this point in the history
docs for 1.0
  • Loading branch information
moiSentineL authored Aug 3, 2024
2 parents 9578d79 + 8ee4040 commit 85dc5e0
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 64 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -221,5 +221,6 @@ $RECYCLE.BIN/

*.db
flomo/data/*
wiki

# End of https://www.toptal.com/developers/gitignore/api/windows,python,visualstudiocode
154 changes: 90 additions & 64 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -1,62 +1,94 @@
<p align="center">
<img src="https://raw.githubusercontent.com/moiSentineL/flomo/main/docs/assets/flomo-speed.gif" width="500">
<img src="https://raw.githubusercontent.com/moiSentineL/flomo/main/docs/assets/flomo-logo.png" width="300" style="margin-right: 10px; vertical-align: middle">
</p>
<p align="center">
<img src="https://raw.githubusercontent.com/moiSentineL/flomo/main/docs/assets/flomo-new.gif" width="400" style="margin-right: 10px; vertical-align: middle">
<img src="https://raw.githubusercontent.com/moiSentineL/flomo/main/docs/assets/flomo-track.gif" width="400" style="margin-right: 10px; vertical-align: middle">
</p>

---

<div align="center">
<a href="https://github.com/moiSentineL/flomo#-installation">Installation</a> |
<a href="https://github.com/moiSentineL/flomo#-getting-started">Getting Started</a> |
<a href="https://github.com/moiSentineL/flomo/wiki">Wiki</a>
<br>
<br>
</div>

# flomo
<div align="center" styles="padding-top: 1em">
<img src="https://img.shields.io/pypi/v/flomodoro?style=flat-square" alt="PyPI Version">
<img src="https://github.com/moiSentineL/flomo/actions/workflows/publish.yml/badge.svg?style=plastic" alt="Build Status">
<img src="https://img.shields.io/github/license/moiSentineL/flomo?style=flat-square" alt="License">
<img src="https://img.shields.io/pypi/dm/flomodoro?style=flat-square" alt="Downloads">
<br>
<img src="https://img.shields.io/github/issues/moiSentineL/flomo?style=flat-square" alt="Issues">
<img src="https://img.shields.io/github/forks/moiSentineL/flomo?style=flat-square" alt="Forks">
<img src="https://img.shields.io/github/stars/moiSentineL/flomo?style=flat-square" alt="Stars">
</div>

`flomo` is a cross-platform TUI/CLI for using the Flowtime Technique a.k.a. **Flowmodoro** Technique. It is a task execution helper, or in other words, productivity booster. `flomo` allows you to work on tasks in a flow state and manage your work/break time.
---

`flomo` is a crossplatform TUI/CLI for using the Flowtime Technique, also known as the **Flowmodoro** Technique. It's a task execution helper, or in other words, a productivity booster! 🚀

## Features
`flomo` allows you to work on tasks in a flow state, manage your work/break time, and track your sessions.

- Cross-Platform
- Stopwatch for Flow and Timer for Breaks
- Notification (Linux only, for now.)
- Nice and Clean UI
- Fairly easy-to-use, I suppose.
- (Potential) productivity booster.
Built with: [rich](https://github.com/Textualize/rich) & [blessed](https://github.com/jquast/blessed) (TUI), [click](https://click.palletsprojects.com/en/8.1.x/) (CLI), [notify-send](https://man.archlinux.org/man/notify-send.1) for Linux notifications, [playsound](https://github.com/TaylorSMarks/playsound) (Windows & Mac sound), [paplay](https://linux.die.net/man/1/paplay) (Linux sound), [sqlite3](https://www.sqlite.org) (database).

## Background
## ✨ Features

`flomo` was started as a Hackathon ([livestream](https://www.youtube.com/live/xyqQgPEozv0 "https://www.youtube.com/live/xyqQgPEozv0")) on 6 June, 2024 with [@Jonak-Adipta-Kalita](https://github.com/Jonak-Adipta-Kalita "https://github.com/Jonak-Adipta-Kalita") and [@AnubhavSC](https://github.com/AnubhavSC "https://github.com/AnubhavSC"). We wanted to create a small scale project which was fun to make and possibly helped others as well. Moreover, we all are productivity fanatics. This is a project *heavily* inspired by [pomo](https://github.com/kevinschoon/pomo "https://github.com/kevinschoon/pomo").
- **Cross-Platform** 🌐
- Stopwatch for Flow and Timer for Breaks ⏱️
- Session tracker (date, duration, tag, and session) 🗓️
- Session manager: easily manipulate the sessions via CLI ⚙️
- Customizable, Clean UI 🎨
- Notifications (Linux only, for now) 🔔
- Fairly easy-to-use, I suppose 🤔
- (Potential) productivity booster 💥

And when we were 2 hours in, we realised that it was harder than we thought. We spent a lot of time debugging and refactoring. [Here](https://nibirsan.org/blog/p/the-hackathon-experience/) are the things we learned from the Hackathon.
## 🎉 Background

## Flow and Flowtime Technique
`flomo` started as a Hackathon ([livestream](https://www.youtube.com/live/xyqQgPEozv0)) on June 6, 2024, with [@Jonak-Adipta-Kalita](https://github.com/Jonak-Adipta-Kalita) and [@AnubhavSC](https://github.com/AnubhavSC). We aimed to create a small project that was fun and could potentially help others. We're all productivity fanatics, and this project is _heavily_ inspired by [pomo](https://github.com/kevinschoon/pomo).

[Mihaly Csikszentmihalyi](https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi "https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi") was known for his work on **Flow Theory**. He describes "flow" as:[^1]
However, two hours in, we realized it was harder than expected. We spent a lot of time debugging and refactoring. [Here](https://nibirsan.org/blog/p/the-hackathon-experience/) are our learnings from the Hackathon.

## 🌟 Flow and Flowtime Technique

[Mihaly Csikszentmihalyi](https://en.wikipedia.org/wiki/Mihaly_Csikszentmihalyi) was known for his work on **Flow Theory**. He describes "flow" as:

> "A state of being in which people become so immersed in the joy of their work or activity 'that nothing else seems to matter.'"
And as developers/creators/romantics, we experience that state of "flow" often. This "flow" can **vary** at times, meaning that it can increase *or* decrease.
As developers, creators, and romantics, we often experience that state of "flow." This "flow" can **vary**, sometimes increasing or decreasing.

This can easily be shown with a graph:
This can be visualized with a graph:

<p align="center">
<img src="https://raw.githubusercontent.com/moiSentineL/flomo/main/docs/assets/flow-graph.png" width="500">
<img src="https://raw.githubusercontent.com/moiSentineL/flomo/main/docs/assets/flow-graph.png" width="400">
</p>

However, we can exploit that to our advantage and work efficiently, by finding the **right time** to take a break. And that right time is when the "flow" is depleting. And this is called the Flowtime technique.
We can take advantage of this by identifying the **right time** to take a breakwhen the "flow" is depleting. This is the Flowtime technique.

It works fairly simply: **If you work for x amount of minutes, you should take a break for x/5 amount of minutes. And repeat.**
It works like this: **If you work for x minutes, take a break for x/5 minutes. Then, repeat.**

This calls for extensive amount of discipline. Which means that you must have at least some amount of natural focus. If not, I encourage you to check the Pomodoro Technique out.
This requires a good deal of discipline, meaning you need at least some natural focus. If not, check out the [Pomodoro Technique](https://www.pomodorotechnique.com/)! 🍅

## Installation
## 🛠️ Installation

### Pre-requisites
### 📋 Pre-requisites

- [Python](https://www.python.org/)
- [pip](https://pip.pypa.io/en/stable/installation/)
- 🐍 [Python](https://www.python.org/) ≥ 3.12
- 📦 [pip](https://pip.pypa.io/en/stable/installation/)
- 🛠️ [GCC Compiler](https://gcc.gnu.org/) **if** installing from source.

### Instructions
### 📦 Instructions

#### Using PyPi package

```bash
pip install flomodoro
```

If you are on Linux, make sure you have `/home/user/.local/bin` in your `PATH`. [More info for Linux newbies](https://linuxize.com/post/how-to-add-directory-to-path-in-linux/ "https://linuxize.com/post/how-to-add-directory-to-path-in-linux/")
_Note: If you're on Linux, ensure `/home/user/.local/bin` is in your `PATH`. [More info for Linux newbies](https://linuxize.com/post/how-to-add-directory-to-path-in-linux/)_

#### Installing from source

Expand All @@ -65,64 +97,58 @@ git clone https://github.com/moiSentineL/flomo.git
cd flomo
pip install -r requirements.txt

gcc -fPIC -shared -o flomo/session_id.so flomo/session_id.c

pip install -e .
```

## Usage
## 🚀 Getting Started

### Known Issues
Initialize flomo by:

- Skip doesn't work while on break (you can just make another session).
- Might not work if you have attention span of a goldfish.

### Getting Started
```bash
flomo init
```

Start a flow by:

```bash
flomo s
```

Start a flow with tag `work` and `math` as session name:
Start a flow with the tag `work` and the session name `math`:

```bash
flomo s -t work -n "math"
flomo s -t work -n math
```

### Commands
### Check the [wiki](https://github.com/moiSentineL/flomo/wiki) for more info 📚

```
flomo --help
Usage: flomo [OPTIONS] COMMAND [ARGS]...
A Flowmodoro CLI for productivity enthusiasts.
Options:
--help Show this message and exit.
Commands:
init (i) Initialize the required files for Flomo.
start (s) Start a Flowmodoro session.
tracking (t) Show the tracking history.
delete (d) Delete sessions.
change (ch) Change session data.
config (cf) Print config file path
error (er) Show the error log.
```
## 🛤️ Roadmap

- ✅ Add sound on timer/stopwatch start
- ✅ Notification (only Linux for now)
- ✅ Configure colors
- ✅ Track sessions
- ✅ Configure colors
- 🟧 Skipping Break
- 🟧 Chart Generation / Statistics

#### Pro Tip for Linux Users
Check our [Kanban Board](https://github.com/users/moiSentineL/projects/2).

If you have to repeat working on certain tags (or sessions) and don't want to keep typing the commands every time, you can create a simple script like [study.sh](https://raw.githubusercontent.com/moiSentineL/flomo/main/docs/study.sh), and set an alias to that script.
## 🤝 How to Contribute

For example, with _that_ script, I can simply enter `study math` (I've set "study" as the alias) in my terminal and it will start a session with the tag `study` (in my case) with `math` as the session name.
Want to help? Great! Here's how:

## Roadmap
1. **Fork** this [repo](https://github.com/moiSentineL/flomo/fork).
2. **Clone** it to your local machine.
3. **Create a branch** for your changes.
4. **Make your edits** and test them.
5. **Commit and push** your changes.
6. **[Open a pull request](https://github.com/moiSentineL/flomo/pulls)** to the `main` branch.

- [x] Add sound on timer/stopwatch start
- [x] Notification (only Linux for now)
- [ ] Tracking data / time studied
- [ ] Configure colors
_Note: if you're new to Git and Github, I suggest you read this [Intro to Git and GitHub for Beginners](https://product.hubspot.com/blog/git-and-github-tutorial-for-beginners)._

Check our [Kanban Board](https://github.com/users/moiSentineL/projects/2 "https://github.com/users/moiSentineL/projects/2")
Let's collaborate! 🌟

[^1]: : Csikszentmihalyi, M. (1990). *Flow: The Psychology of Optimal Experience*. New York: Harper and Row. p. 15 [ISBN](<https://en.wikipedia.org/wiki/ISBN_(identifier)> "ISBN (identifier)") [0-06-092043-2](https://en.wikipedia.org/wiki/Special:BookSources/0-06-092043-2 "Special:BookSources/0-06-092043-2")
[^1]: Csikszentmihalyi, M. (1990). _Flow: The Psychology of Optimal Experience_. New York: Harper and Row. p. 15 [ISBN](<https://en.wikipedia.org/wiki/ISBN_(identifier)>) [0-06-092043-2](https://en.wikipedia.org/wiki/Special:BookSources/0-06-092043-2).

0 comments on commit 85dc5e0

Please sign in to comment.