summaryrefslogtreecommitdiff
path: root/proposal.md
blob: f84206ad0f023e956870e09493c21c47bb927baa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Aggiedit
Aggiedit will be a Reddit clone for university students and businesses with custom domains to share memes or discuss things. When a user registers with a new domain, if a "subaggie" doesn't already exist for that domain, it will be created. Otherwise, they have joined that "subaggie".

## Challenges
* Learning LiveView (I have experience with Phoenix, but want to checkout the real-time aspect of it)
* Email sending for authentcation (I've looked into sendgrid for my own domain)

## Requirements
* User authentication
  This app uses user authentication and verification to determine if someone actually belongs to a domain, in addition to providing an owner on each post.
* Database
  I will need to store rooms, posts, comments, uploads, etc. in a database and be able to make queries to it. 
* Publication
  This should be relatively easy since I can just copy most of my Docker stuff from my personal Phoenix projects.
* Usefulness
  This app will be useful in spreading discussion semi-anonymously.

## Timeline
| Task                                                                       |    Time  |
|----------------------------------------------------------------------------|----------|
| Setting up project with basic authentication from `mix phx.gen.auth`       |  1 hour  |
| Adding email verification with SendGrid                                    |  1 hour  |
| Creating real-time post timeline and models                                |  2 hours |
| Adding rooms for each domain; limiting posts to users within that domain   |  3 hours |
| Adding static image uploads                                                |  1 hour  |
| Associating uploads in db with a post                                      |  1 hour  |
| UI cleanup                                                                 |  4 hours |
| Deployment                                                                 |  2 hours |

Total: 15 hours