-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
921 changed files
with
5,265 additions
and
85 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
[ | ||
import_deps: [:ecto, :ecto_sql, :phoenix], | ||
subdirectories: ["priv/*/migrations"], | ||
plugins: [Phoenix.LiveView.HTMLFormatter], | ||
inputs: ["*.{heex,ex,exs}", "{config,lib,test}/**/*.{heex,ex,exs}", "priv/*/seeds.exs"] | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,77 +1,6 @@ | ||
<<<<<<< HEAD | ||
alvo | ||
======= | ||
|
||
> *alvo is our* ***Quest*** *is to* ***codify*** *the* ***vocabulary*** *that* ***people*** | ||
*use when teaching* ***each other*** *how to* ***interact*** *with the* ***web***. | ||
|
||
![placeholder image](http://i.imgur.com/uQughKi.jpg) | ||
|
||
**alvo** (pronounced "*al vu*!") enables ***non-technical people*** to ***understand*** and ***test*** the **web**. | ||
|
||
## Why? | ||
|
||
|
||
workflow: | ||
+ watchify files in `/lib` | ||
+ browserify files in `/lib` | ||
pre-commit: | ||
+ uglify build.js | ||
|
||
|
||
### Story | ||
|
||
We all have a ***personal story*** of teaching someone how to use the internet. | ||
I have taught *many* people how to use the web (including how to write HTML/CSS/JS/PHP/etc) | ||
but one that stands out as meaningful was in the winter of 2005 when I sat down and taught my (retired-journalist) *father* | ||
how to get online, Search (Goolge) and send/read email. At the time I produced | ||
a *bespoke* 30 page manual with detailed screenshots of each step he would need to perform to accomplish his desired task because I | ||
*knew* he was was going to need to refer back to it after I left to go back to | ||
university [a thousand miles away](http://www.wolframalpha.com/input/?i=distance+edinburgh+to+lisbon+as+the+crow+flies). | ||
I did not publish this user manual because it contained passwords and photos of | ||
my dad's actual equipment, but I wish I had kept it for posterity... | ||
Anyway, what if there was a simpler way of doing that? | ||
What if you could record a "Macro" | ||
|
||
### Pain Point | ||
|
||
As [***Creative Technologist***](https://markavnet.wordpress.com/2010/06/22/what-the-heck-is-a-creative-technologist/) | ||
we *love* speaking to the ***people*** that *use* our products to get their *feedback*. | ||
Often the people *using* our products are non-technical and thus showing them *code* is *futile*. | ||
Non-technical people are not "*stupid*" | ||
(many of the "product owners" and "end users" we've worked with are *insanely smart*!), | ||
they just don't have [***time***](https://github.com/ideaq/time) | ||
to know *everything* (*who does*?!) and thus learning to code (*in addition to their existing workload*) | ||
is *impractical*. | ||
|
||
So, we are on a *mission* to simplify web creativity for everyone! | ||
|
||
## Features | ||
|
||
### Plain English* | ||
|
||
We want this to be as *simple* as possible, so we are | ||
building it *from scratch* to look/read like English (*not code*). | ||
|
||
A ***simple example*** of submitting a contact form using Liso: | ||
|
||
```yml | ||
visit /contact | ||
input #text "I want to know more about alvo!" | ||
input #email "[email protected]" | ||
click #submit | ||
``` | ||
|
||
That's it! it reads like english! | ||
|
||
**Q**: *What* are the **#** (*hash*) simbols? | ||
**A**: They are the id's of the form elements on the *contact* page. | ||
(hint: *Scroll down* to the ***glossary*** to learn more) | ||
======= | ||
<div align="center"> | ||
<img src="https://github.com/dwyl/atm/assets/194400/1d71bfb3-1c55-46f0-8c0e-b72b725937bd" height="300"> | ||
<h1>**A**ctionable **T**imely **M**etrics.</h1> | ||
>>>>>>> 5104fda (add intro logo see: https://github.com/dwyl/atm/issues/23#issuecomment-1626997323 🏧) | ||
<h1><b>A</b>ctionable <b>T</b>imely <b>M</b>etrics.</h1> | ||
|
||
|
||
|
||
|
@@ -90,10 +19,8 @@ in Web Application/Site Development, | |
with more than 100 project teams and organizations | ||
we've noted one alarming fact: | ||
|
||
**_Most_ Product Owners don't _check_ Google Analytics** | ||
and use the **insights** to **_drive_ decisions**. | ||
|
||
|
||
> **_Most_ Product Owners don't _check_ Google Analytics** | ||
or use the **insights** to **_drive_ decisions**. | ||
|
||
If the **_leaders_ aren't data driven**, | ||
_nobody_ `else` in the team will be. | ||
|
@@ -110,20 +37,67 @@ More detail in: https://github.com/dwyl/atm/issues/16 | |
|
||
## Name? 🏧 | ||
|
||
"ATM" stands for "Actionable Timely Metrics" (_this is a ["backronym"](https://en.wikipedia.org/wiki/Backronym)). We **really** wanted to give this project a name that is both short, _memorable_ and helps stakeholders _understand_ the importance of analytics data to the organisation! | ||
|
||
"ATM" stands for "**A**ctionable **T**imely **M**etrics" | ||
(_this | ||
["**backronym**"](https://en.wikipedia.org/wiki/Backronym) | ||
is not accidental_). | ||
We _really_ wanted to give this project a name | ||
that is both short, _memorable_ | ||
and helps stakeholders _understand_ | ||
the importance of metrics to the organization! | ||
|
||
![free-cash-withdrawals](https://github.com/dwyl/atm/assets/194400/78fda825-5f71-4eed-8738-aef033829d7c) | ||
|
||
# Who? | ||
We want `people` to understand that being data-driven | ||
is like having a "**_free_**" **cash machine**. | ||
|
||
This project aims to both _simplify_ the language/vocabulary around analytics/metrics and create a simple way of tracking _any_ event in _any_ web app. | ||
|
||
If it's not _immediately obvious_ **Why** this project is valuable and **How** it works, | ||
we have failed. So if you are scratching your head wondering: "_Is this for **me**?_" ... | ||
**please _help_ us** by describing your situation so we can **_help_ you** realise the _value_ of the data you are sending to Google Analytics and then _ignoring_... | ||
|
||
# Who? | ||
|
||
This project if for the `people` | ||
that _get_ it | ||
and want an easy way for others | ||
in their team/organization to do the same. | ||
|
||
We aim to both | ||
_simplify_ the language/vocabulary around analytics/metrics | ||
and create a _simple_ way | ||
of tracking _any_ event in _any_ web/mobile app. | ||
|
||
If it's not _immediately obvious_ **Why** this project | ||
is valuable and **How** it works, we have failed. | ||
So if you are scratching your head wondering: | ||
"_Is this for **me**?_" ... | ||
**please _help_ us** by describing your situation | ||
so we can **_help_ you** realize the _value_ | ||
of the data you are sending | ||
to Google Analytics | ||
and then _ignoring_... | ||
|
||
# How? | ||
|
||
+ [ ] Define the basic schema for an Events (Analytics) Table! | ||
+ [ ] Implement it! | ||
If you haven't already, | ||
please try the demo: | ||
|
||
|
||
|
||
## Run on `localhost` | ||
|
||
To run the `ATM` on your machine, | ||
|
||
|
||
|
||
1. | ||
|
||
Run | ||
`mix setup` | ||
to install and setup dependencies. | ||
|
||
Now visit | ||
[`localhost:4000`](http://localhost:4000) | ||
in your web browser. | ||
|
||
## Contributing? | ||
|
||
Please read the issues: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
@import "tailwindcss/base"; | ||
@import "tailwindcss/components"; | ||
@import "tailwindcss/utilities"; | ||
|
||
/* This file is for your main application CSS */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,41 @@ | ||
// If you want to use Phoenix channels, run `mix help phx.gen.channel` | ||
// to get started and then uncomment the line below. | ||
// import "./user_socket.js" | ||
|
||
// You can include dependencies in two ways. | ||
// | ||
// The simplest option is to put them in assets/vendor and | ||
// import them using relative paths: | ||
// | ||
// import "../vendor/some-package.js" | ||
// | ||
// Alternatively, you can `npm install some-package --prefix assets` and import | ||
// them using a path starting with the package name: | ||
// | ||
// import "some-package" | ||
// | ||
|
||
// Include phoenix_html to handle method=PUT/DELETE in forms and buttons. | ||
import "phoenix_html" | ||
// Establish Phoenix Socket and LiveView configuration. | ||
import {Socket} from "phoenix" | ||
import {LiveSocket} from "phoenix_live_view" | ||
import topbar from "../vendor/topbar" | ||
|
||
let csrfToken = document.querySelector("meta[name='csrf-token']").getAttribute("content") | ||
let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToken}}) | ||
|
||
// Show progress bar on live navigation and form submits | ||
topbar.config({barColors: {0: "#29d"}, shadowColor: "rgba(0, 0, 0, .3)"}) | ||
window.addEventListener("phx:page-loading-start", _info => topbar.show(300)) | ||
window.addEventListener("phx:page-loading-stop", _info => topbar.hide()) | ||
|
||
// connect if there are any LiveViews on the page | ||
liveSocket.connect() | ||
|
||
// expose liveSocket on window for web console debug logs and latency simulation: | ||
// >> liveSocket.enableDebug() | ||
// >> liveSocket.enableLatencySim(1000) // enabled for duration of browser session | ||
// >> liveSocket.disableLatencySim() | ||
window.liveSocket = liveSocket | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
// See the Tailwind configuration guide for advanced usage | ||
// https://tailwindcss.com/docs/configuration | ||
|
||
const plugin = require("tailwindcss/plugin") | ||
const fs = require("fs") | ||
const path = require("path") | ||
|
||
module.exports = { | ||
content: [ | ||
"./js/**/*.js", | ||
"../lib/*_web.ex", | ||
"../lib/*_web/**/*.*ex" | ||
], | ||
theme: { | ||
extend: { | ||
colors: { | ||
brand: "#FD4F00", | ||
} | ||
}, | ||
}, | ||
plugins: [ | ||
require("@tailwindcss/forms"), | ||
// Allows prefixing tailwind classes with LiveView classes to add rules | ||
// only when LiveView classes are applied, for example: | ||
// | ||
// <div class="phx-click-loading:animate-ping"> | ||
// | ||
plugin(({addVariant}) => addVariant("phx-no-feedback", [".phx-no-feedback&", ".phx-no-feedback &"])), | ||
plugin(({addVariant}) => addVariant("phx-click-loading", [".phx-click-loading&", ".phx-click-loading &"])), | ||
plugin(({addVariant}) => addVariant("phx-submit-loading", [".phx-submit-loading&", ".phx-submit-loading &"])), | ||
plugin(({addVariant}) => addVariant("phx-change-loading", [".phx-change-loading&", ".phx-change-loading &"])), | ||
|
||
// Embeds Heroicons (https://heroicons.com) into your app.css bundle | ||
// See your `CoreComponents.icon/1` for more information. | ||
// | ||
plugin(function({matchComponents, theme}) { | ||
let iconsDir = path.join(__dirname, "./vendor/heroicons/optimized") | ||
let values = {} | ||
let icons = [ | ||
["", "/24/outline"], | ||
["-solid", "/24/solid"], | ||
["-mini", "/20/solid"] | ||
] | ||
icons.forEach(([suffix, dir]) => { | ||
fs.readdirSync(path.join(iconsDir, dir)).map(file => { | ||
let name = path.basename(file, ".svg") + suffix | ||
values[name] = {name, fullPath: path.join(iconsDir, dir, file)} | ||
}) | ||
}) | ||
matchComponents({ | ||
"hero": ({name, fullPath}) => { | ||
let content = fs.readFileSync(fullPath).toString().replace(/\r?\n|\r/g, "") | ||
return { | ||
[`--hero-${name}`]: `url('data:image/svg+xml;utf8,${content}')`, | ||
"-webkit-mask": `var(--hero-${name})`, | ||
"mask": `var(--hero-${name})`, | ||
"mask-repeat": "no-repeat", | ||
"background-color": "currentColor", | ||
"vertical-align": "middle", | ||
"display": "inline-block", | ||
"width": theme("spacing.5"), | ||
"height": theme("spacing.5") | ||
} | ||
} | ||
}, {values}) | ||
}) | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2020 Refactoring UI Inc. | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
You are running heroicons v2.0.16. To upgrade in place, you can run the following command, | ||
where your `HERO_VSN` export is your desired version: | ||
|
||
export HERO_VSN="2.0.16" ; \ | ||
curl -L "https://github.com/tailwindlabs/heroicons/archive/refs/tags/v${HERO_VSN}.tar.gz" | \ | ||
tar -xvz --strip-components=1 heroicons-${HERO_VSN}/optimized |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/adjustments-horizontal.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/adjustments-vertical.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/archive-box-arrow-down.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions
4
assets/vendor/heroicons/optimized/20/solid/archive-box-x-mark.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/arrow-down-circle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/arrow-down-left.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square-stack.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions
3
assets/vendor/heroicons/optimized/20/solid/arrow-down-right.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions
4
assets/vendor/heroicons/optimized/20/solid/arrow-down-tray.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
10 changes: 10 additions & 0 deletions
10
assets/vendor/heroicons/optimized/20/solid/arrow-left-circle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 4 additions & 0 deletions
4
assets/vendor/heroicons/optimized/20/solid/arrow-left-on-rectangle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.