Git Product home page Git Product logo

a-list's Introduction

A List

AList is a tool for sharing lists of things with your friends. It could be a list of five books you read this summer, a list of five essential gardening tools or a list of your favorite funny twitter accounts - the point is that you can group stuff together, smack some context on it and then share it to social media in a seamless way.

The goal is to present your list in a way that it can be shared on social media, so we'll use twitter cards with generated images for each list.

How It Works

Navigate to alist.link/<your_twitter_handle> to get started. It'll have you log in and then you can start listing things. Navigate to alist.link/<someone else's twitter handle> to see what lists that person has published.

What is a LIST?

  • A list is a set of up to five "things", as well as a Title and a short (300 characters) summary. Each item can optionally have some text appended to contextualize it as well.
  • A list can be ordered, unordered or named (or "template list").

An ordered list can look like this:

Top Five Marvel Movies
1. Black Panther - come on it was easily the best one!
2. Doctor Strange - I loved the way he had to learn to process his arrogance
3. Spider Man: Far from Home - this was just a trip
4. ...
5. ...

An unordered list can look like this:

FAVORITE BOOKS
* GNOMON
* PORTRAIT OF THE ARTIST AS A YOUNG MAN
* TO THE LIGHTHOUSE
* ...
* ...

Finally, a named list (or template list) can look like this:

My Twitter Follows as Adventuring Party
Tank: @jhooks
Healer: @liminalwarmth
Rogue: @visakanv
Caster: @lagrangian
Support: @ahandvanish

Note: list can contain any combination of types of thing - so you can do something like this:

Things that got me through the pandemic:
* @ahandvanish
* Wandavision on Disney Plus
* Dark on Netflix
* Amazon Product Link of some sort?
* whatever

What is a THING?

Each "type" of thing requires a database table, with a polymorphic "Things" category that closes over all the different types.

  1. Media (Books, movies, tv shows, music, comics)
  2. Consumer Products (e.g. amazon referal links)
  3. Apps
  4. Twitter Accounts
  5. AList Lists
  6. Articles/Blog Posts (careful here, I don't want spammers using this)

Additional Notes

I'm going to have Stripe integration, and I think that I'll use it by allowing users to upgrade to a cheap "premium" membership where they can have six items in their lists instead of five.

Thoughts on Implementation

Need the following Elixir contexts in my app:

LinkBuilder - we don't want user-generated links shared anywhere, we want users to e.g. find waht they're looking for via an API and add it to the list. If the item is an amazon item, we'll generate a monetizing link for it when we render the list. If it's a twitter account we'll build that link at render time, etc.

RenderCard - we need some behavior around generating cards from lists. There needs to be a function that takes a List and returns a CardMetadata struct.

Alist

To start your Phoenix server:

  • Install dependencies with mix deps.get
  • Create and migrate your database with mix ecto.setup
  • Install Node.js dependencies with npm install inside the assets directory
  • Start Phoenix endpoint with mix phx.server

Now you can visit localhost:4000 from your browser.

Ready to run in production? Please check our deployment guides.

Learn more

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.