The most basic version of the @dwyl App MVP feature set.
Please try
it: mvp.fly.dev 🙏
And help us to ...
Our goal with this
MVP
is to build the minimal usable App
that covers our basic "Capture, Categorize, Complete"
workflow.
It is well-documented, tested
and easy for a beginner to run & understand.
We shipped the App to
Fly:
mvp.fly.dev
and use/test it (internally).
After collecting initial feedback,
we will integrate it into the main
dwyl/app
repo.
We maintain this repo
as a reference for new joiners
wanting the most basic version
to learn from.
A mobile-first hybrid task and activity (time) tracking tool.
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
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
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, we built the two separate apps:
- Todo list: github.com/dwyl/phoenix-liveview-todo-list
- Stop Watch (Timer): 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. 🤞
This is our wireframe UI/UX we used as the guide to create the MVP functionality:
The idea is a todo list that tracks how much time we spend on a task.
It's deliberately "basic"
and
"ugly"
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! 🙏
More detail on the MVP features: dwyl/app/issues/265
This MVP has two target audiences:
-
@dwyl team to "dogfood" the basic workflow in our App.
It's meant to work for us and have just enough functionality to solve our basic needs. -
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 on our App & Stack much faster.
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 ❓
Please visit
mvp.fly.dev
(or run the app on your localhost
- see below)
and perform some actions to test the App:
- Create a todo list
item
;
Note: this item is
public
(anyone can see it!)
If you wantprivate
items you need to login. - Start a
timer
for the (public
)item
- Stop the
timer
for theitem
(pressstart
) - Mark the
item
asdone
(press/tap thecheckbox
to the left of theitem.text
) - Click on the
done
tab andarchive
theitem
(it will disappear) - Click on the
archived
tab and you will see your archived item - Create a new (
public
)item
. - Start a
timer
for the (public
)item
and leave it running - Login using your
GitHub
orGoogle
account. - Create a todo list
item
while logged-in with atag
. - Start a
timer
for theitem
- Stop the
timer
- Resume the
timer
that you just stopped. - Create a new (
private
) todo listitem
while logged-in with a differenttag
- Start a
timer
for theitem
- Open a second web browser and watch the realtime sync!
- Click on the first private
item
tag
and see the filtered list ofitems
with thattag
- Click on the
active
tab or go back in the browser - Mark the first
item
you created asdone
- Edit the remaining
item
text for the timer that is already running. - Mark the (
private
)item
asdone
and see the time it took. Archive
theitem
- Click on the
tags
label on the navbar to check thetag
s created. - Go back
- Logout of the app
- View the (
public
)item
you created earlier with thetimer
still running.
That's it.
The MVP in a nutshell.
Here's a GIF
if you're low on time:
The GIF
showcases the (todo list) items
,
tag
filtering and timers
being synched across 2 browsers
(one desktop and another mimicking mobile)
in realtime.
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!
This MVP app uses the PETAL
Stack
described in:
dwyl/technology-stack
Going through the individual feature apps listed above 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.
Note: You will need to have
Elixir
andPostgres
installed,
see: learn-elixir#installation and learn-postgresql#installation
Tip: check the prerequisites in: /phoenix-chat-example
On your localhost
,
run the following commands
in your terminal:
git clone [email protected]: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
required to run the App.
Once the mix setup
command completes,
you can run the app with:
mix s
Open the App in your web browser
localhost:4000
and start your tour!
If you want to understand how to build the MVP,
please see:
BUILDIT.md
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
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.
If you have feature ideas, that's great! 🎉
Please share them:
app/issues