# mvp **Repository Path**: mirrors_dwyl/mvp ## Basic Information - **Project Name**: mvp - **Description**: 📲 simplest version of the @dwyl app - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-08-16 - **Last Updated**: 2026-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
# @dwyl App MVP 💡 ⏳ ✅ The most basic version of the **@dwyl App** [**MVP** feature set](https://github.com/dwyl/app/issues/266). # _Please `try` it_: [mvp.fly.dev](https://mvp.fly.dev/) 🙏 And help us to ... MVP Loop ![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/dwyl/mvp/ci.yml?label=build&style=flat-square&branch=main) [![codecov.io](https://img.shields.io/codecov/c/github/dwyl/mvp/main.svg?style=flat-square)](http://codecov.io/github/dwyl/mvp?branch=main) [![Hex.pm](https://img.shields.io/hexpm/v/elixir_auth_google?color=brightgreen&style=flat-square)](https://hex.pm/packages/elixir_auth_google) [![contributions welcome](https://img.shields.io/badge/feedback-welcome-brightgreen.svg?style=flat-square)](https://github.com/dwyl/app-mvp/issues) [![HitCount](https://hits.dwyl.com/dwyl/app-mvp.svg)](https://hits.dwyl.com/dwyl/app-mvp)

- [@dwyl App MVP 💡 ⏳ ✅](#dwyl-app-mvp---) - [_Please `try` it_: mvp.fly.dev 🙏](#please-try-it-mvpflydev-) - [Why? 🤷‍♀️](#why-️) - [_What_? 💭](#what-) - [MVP? 🚧](#mvp-) - [Two Apps in _One_ ✌️](#two-apps-in-one-️) - [Proposed MVP UI/UX 💡](#proposed-mvp-uiux-) - [_Who?_ 👥](#who-) - [Feedback! 🙏](#feedback-) - [Perform Some Actions in the App 📱](#perform-some-actions-in-the-app-) - [_How_? 💻](#how-) - [Tech Stack? 🧰](#tech-stack-) - [Run the MVP App on your `localhost` ⬇️](#run-the-mvp-app-on-your-localhost-️) - [_Build_ It! 👷‍♀️](#build-it-️) - [Contributing 👩‍💻](#contributing-) - [More Features? 🔔](#more-features-) # Why? 🤷‍♀️ Our goal with this [MVP](https://github.com/dwyl/technical-glossary/issues/44) is to build the **minimal _usable_ App**
that covers our basic "***Capture, Categorize, Complete***" [**workflow**](https://github.com/dwyl/product-roadmap#what).
It is well-documented, tested and easy for a beginner to run & understand. We _shipped_ the App to Fly: [mvp.fly.dev](https://mvp.fly.dev/) and _use/test_ it (_internally_).
After collecting initial feedback, we will integrate it into the main [dwyl/**app**](https://github.com/dwyl/app) repo.
We maintain this repo as a **reference** for **new joiners**
wanting the **most _basic_ version** to **learn** from. # _What_? 💭 A **mobile-first** **_hybrid_** **task and activity** (time) **tracking tool**. ## MVP? 🚧 A Minimum Viable Product (MVP), as its' name suggests, is the _minimum_ we can do to test the idea. > If you're new to MVPs, > the Wikipedia article is a good starting point: [wikipedia.org/wiki/Minimum_viable_product](https://en.wikipedia.org/wiki/Minimum_viable_product)
> Or listen to Eric Ries describe it in 3 minutes: > https://youtu.be/1FoCbbbcYT8
> Validate your business idea: > THE LEAN STARTUP by Eric Ries: > https://youtu.be/QaoVWtLX038
> Building Minimal Viable Product with Michael Seibel UC Berkeley Course: > https://youtu.be/m4isFputh68?t=75
> How _Not_ To Start A Startup | Michael Seibel: > https://youtu.be/9tq-lTjTu2Q?t=413 ## Two Apps in _One_ ✌️ We've found it _tedious_ to use **several _separate_ apps** for task and time tracking 🤦‍♂️
and think it's _logical_ to _combine_ the functionality. This MVP combines **two apps** into ***one***. 💡 In our journey to understand the features we want from [first principles](https://fs.blog/first-principles/), we **built** the two _separate_ apps: 1. Todo list: [github.com/dwyl/phoenix-liveview-**todo-list**](https://github.com/dwyl/phoenix-liveview-todo-list-tutorial) 2. Stop Watch (Timer): [github.com/dwyl/phoenix-liveview-**stopwatch**](https://github.com/dwyl/phoenix-liveview-stopwatch) We encourage you to read and understand the individual feature Apps ***`before`*** trying to run the MVP. 👀
But our hope is that the UI/UX in the MVP is sufficiently intuitive that it **_immediately_ makes sense**. 🤞 ### Proposed MVP UI/UX 💡 This is our wireframe UI/UX we used as the _guide_ to create the MVP functionality: ![mvp-proposed-ux](https://user-images.githubusercontent.com/194400/73374277-d9445480-42b1-11ea-980a-3fabbfe5a9fd.png) The idea is a todo list that tracks how much time we spend on a task. It's _deliberately_ "basic" and ["ugly"](https://youtu.be/m4isFputh68?t=158) so we _don't_ focus on aesthetics. 🚀
It will _definitely_ change over time as we _use_ the App and collect _feedback_. 💬
If you want to _help_ make it better, [share your thoughts!](https://github.com/dwyl/app-mvp/issues/) 🙏 More detail on the MVP features: [dwyl/app/issues/265](https://github.com/dwyl/app/issues/265)
# _Who?_ 👥 This **MVP** has **_two_ target audiences**: 1. **@dwyl team** to ["dogfood"](https://en.wikipedia.org/wiki/Eating_your_own_dog_food) the basic workflow in our App.
It's meant to work for _us_ and have just enough functionality to solve our _basic_ needs. 2. **Wider community** of people who want to see a **_fully_-functioning `Phoenix` app** with good documentation and testing. _Longer_ term, the MVP will help future @dwyl team members get [**up-to-speed**](https://dictionary.cambridge.org/dictionary/english/up-to-speed) on our App & Stack **_much_ faster**. ## Feedback! 🙏 Your feedback is very much encouraged/welcome! 💬
If you find the repo interesting/useful, please ⭐ on GitHub.
And if you have any questions, please open an issue: [app-mvp/issues](https://github.com/dwyl/app-mvp/issues) ❓
### Perform Some Actions in the App 📱 Please visit [`mvp.fly.dev`](https://mvp.fly.dev/) (_or run the app on your `localhost` - see below_)
and perform some actions to test the App: 1. ***Create*** a todo list `item`;
> Note: this item is **`public`** (anyone can see it!)
If you want **`private`** items you need to **login**. 2. ***Start*** a `timer` for the (`public`) `item` 3. ***Stop*** the `timer` for the `item` (press **`start`**) 4. ***Mark*** the `item` as `done` (press/tap the `checkbox` to the left of the `item.text`) 5. ***Click*** on the `done` tab and **`archive`** the `item` (it will disappear) 6. ***Click*** on the `archived` tab and you will see your archived item 7. ***Create*** a new (`public`) `item`. 8. ***Start*** a `timer` for the (`public`) `item` and leave it running 9. ***Login*** using your **`GitHub`** or **`Google`** account. 10. ***Create*** a todo list `item` while logged-in with a `tag`. 11. ***Start*** a `timer` for the `item` 12. ***Stop*** the `timer` 13. ***Resume*** the `timer` that you just stopped. 14. ***Create*** a new (`private`) todo list `item` while logged-in with a different `tag` 15. ***Start*** a `timer` for the `item` 16. ***Open*** a second web browser and watch the ***realtime sync***! 17. ***Click*** on the first private `item` `tag` and see the filtered list of `items` with that `tag` 18. ***Click*** on the `active` tab or go back in the browser 19. ***Mark*** the first `item` you created as `done` 20. ***Edit*** the remaining `item` text for the timer that is already running. 21. ***Mark*** the (`private`) `item` as `done` and see the time it took. 22. ***`Archive`*** the `item` 24. ***Click*** on the `tags` label on the navbar to check the `tag`s created. 25. ***Go back*** 26. ***Logout*** of the app 27. ***View*** the (`public`) `item` you created earlier with the `timer` still running. That's it. The MVP in a nutshell. Here's a **`GIF`** if you're low on time: ![speedrun](https://user-images.githubusercontent.com/17494745/198015908-40b08f1a-4f5c-4058-9ec8-dd90c4140edc.gif) The **`GIF`** showcases the (todo list) `items`, `tag` filtering and `timers` being synched across 2 browsers (one desktop and another mimicking mobile) in realtime.
# _How_? 💻 Our goal is to document as much of the implementation as possible, so that _anyone_ can follow along. If you spot a gap in the docs, please [let us know!](https://github.com/dwyl/app-mvp/issues) ## Tech Stack? 🧰 This **MVP** app uses the **`PETAL` Stack** described in: [dwyl/**technology-stack**](https://github.com/dwyl/technology-stack) Going through the individual feature apps listed [above](#two-apps-in-one-️) will give you the knowledge to understand this MVP. If you have _any_ coding skills (e.g: `JavaScript`, `Java`, `Python`, `Ruby`, `PHP`, `SQL`, etc.)
you will be able to follow along without much difficulty as the code is **_deliberately_ simple**. ## Run the MVP App on your `localhost` ⬇️ > **Note**: You will need to have **`Elixir`** and **`Postgres` installed**,
see: [learn-elixir#installation](https://github.com/dwyl/learn-elixir#installation) and [learn-postgresql#installation](https://github.com/dwyl/learn-postgresql#installation) > **Tip**: check the prerequisites in: > [**/phoenix-chat-example**](https://github.com/dwyl/phoenix-chat-example#0-pre-requisites-before-you-start) On your `localhost`, run the following commands in your terminal: ```sh git clone git@github.com:dwyl/mvp.git && cd mvp source .env_sample mix setup ``` That will load up the necessary env variables to run the app, download the **`code`**, install dependencies, and create the necessary database + tables. The line `source .env_sample` loads the [environment variables](https://github.com/dwyl/learn-environment-variables) required to run the App. Once the `mix setup` command completes, you can run the app with: ```sh mix s ``` Open the App in your web browser [**`localhost:4000`**](http://localhost:4000/) and start your tour!
## _Build_ It! 👷‍♀️ If you want to understand how to _build_ the MVP, please see: [**`BUILDIT.md`**](https://github.com/dwyl/app-mvp/blob/main/BUILDIT.md)
## Contributing 👩‍💻 All contributions from typo fixes to feature requests are always welcome! 🙌 Please start by:
a. **Star** the repo on GitHub so you have a "bookmark" you can return to. ⭐
b. **Fork** the repo so you have a copy you can "hack" on. 🍴
c. **Clone** the repo to your `localhost` and run it! (see below) 👩‍💻
For more detail, please see: [dwyl/**contributing**](https://github.com/dwyl/contributing) ### More Features? 🔔 Please note that our goal with this MVP is _not_ to have _all_ the features; again, it's _deliberately_ simple.
We will be adding _lots_ more features to the _full_ [**App**](https://github.com/dwyl/app).
If you have feature ideas, that's great! 🎉
Please _share_ them: [**app/issues**](https://github.com/dwyl/app/issues)