|
1 |
| -# Coaction |
2 |
| - |
3 |
| -Lots of companies need collaboration tools. Unfortunately, these are usually really complicated, and for non-technical users, they are daunting. We want to build a collaboration tool that helps people track and collaborate on tasks without requiring tons of technical expertise. And we _don't_ want to overwhelm them with lots of bells and whistles. |
4 |
| - |
5 |
| -This collaboration tool will be made of two parts: |
6 |
| - |
7 |
| -* A single-page application in Angular |
8 |
| -* A REST API built with Python and Flask |
9 |
| - |
10 |
| -## Normal Mode |
11 |
| - |
12 |
| -Users can: |
13 |
| - |
14 |
| -* Register for a new account |
15 |
| -* Login with their account |
16 |
| -* Create new tasks |
17 |
| - * Assign the new task to someone (from a list of current users) |
18 |
| -* See an overview of all incomplete tasks in the system |
19 |
| -* See tasks assigned to them |
20 |
| -* See all tasks they've assigned to others |
21 |
| -* Identify overdue tasks. These should have a visual identifier everywhere they are present. |
22 |
| -* Mark their tasks as started or complete |
23 |
| -* Reassign tasks assigned to them to others |
24 |
| -* Comment on tasks |
25 |
| - |
26 |
| -Tasks must have: |
27 |
| - |
28 |
| -* a title |
29 |
| -* a description |
30 |
| -* a status ("new", "started", or "done") |
31 |
| -* an assignee |
32 |
| - |
33 |
| -Tasks can have: |
34 |
| - |
35 |
| -* a due date (stored in UTC) |
36 |
| -* comments |
37 |
| - |
38 |
| -### Thoughts about UI and UX |
39 |
| - |
40 |
| -* The UI should be responsive (e.g. look good on mobile and desktop). |
41 |
| -* The UI should represent new, doing, and done tasks logically |
42 |
| -* Think about the persona of the end-user |
43 |
| - * How can you represent a task as simply as possible? |
44 |
| - * What is a users' primary concern? |
45 |
| - * What do they most want to see when logging in? |
46 |
| - * What other personas might there be? Managers? What would their landing page look like? |
47 |
| - |
48 |
| -### Note about authentication |
49 |
| - |
50 |
| -Authentication should be done with cookie-based sessions. The cookies will have to be created through Flask, so there should be an API endpoint that logs in users. |
51 |
| - |
52 |
| -## Hard Mode |
53 |
| - |
54 |
| -For hard mode, you can choose one or more of the following: |
55 |
| - |
56 |
| -* Add the ability to add a list of todos to a task |
57 |
| - * Users can edit/remove todos |
58 |
| - * Users can check off a todo in order to mark it as completed |
59 |
| -* Users can see a chart of the amount of todos they have completed over time |
60 |
| - * They can also see other stats, like the amount they've created, and the amount "in-flight" (started but not completed) |
61 |
| - * These stats should be available for the entire organization |
62 |
| -* Tasks can be assigned to people that don't yet have an account by using their email address. That new person who does not yet have an account will get an email with a link to let them create an account. |
63 |
| -* Tasks can have attachments (images, files). Because you're going to deploy to Heroku, these should be stored in S3. |
64 |
| - |
65 |
| ---- |
66 |
| - |
67 |
| -## Setup for front-end students |
68 |
| - |
69 |
| -### Front end code |
70 |
| - |
71 |
| -You need to run `npm install` |
72 |
| - |
73 |
| -From that point on, you can just run `gulp` to run in development mode. |
74 |
| - |
75 |
| -Run `gulp release` to build a minified, bundled, optimized version of your code. |
76 |
| - |
77 |
| -The `dist` folder is now `coaction/static`. |
78 |
| - |
79 |
| -All of your URLs (including Angular template URLs) should begin with static. |
80 |
| -(e.g. 'static/my-directive/my-directive.html') |
81 |
| - |
82 |
| -Live-reload is working, but is a wee smidge different. You'll need this Chrome |
83 |
| -extension installed: |
84 |
| - |
85 |
| -https://chrome.google.com/webstore/detail/livereload/jnihajbhpnppcggbcgedagnkighmdlei?hl=en |
86 |
| - |
87 |
| -### Python |
88 |
| - |
89 |
| -In order to see your HTML, CSS, and JavaScript, you will need to run Python. The version we use is not the same as the one on your system, so you'll have to install it. Here's what you do: |
90 |
| - |
91 |
| -1. Run `brew install python3`. |
92 |
| -2. In the `coaction` folder, run `pip3 install -r requirements.txt`. This installs all the Python packages we need. |
93 |
| - |
94 |
| -That's it! |
95 |
| - |
96 |
| -When you're ready to run the application, from the `coaction` folder run `python3 manage.py server`. |
97 |
| - |
98 |
| -**NOTE**: This is different from how the Python students run this. We've simplified it in your case. |
99 |
| - |
100 |
| -### Databases |
101 |
| - |
102 |
| -You'll need a database for this project. We've set it up so it should be easy. The Python students on your project will be able to help you with this. |
103 |
| - |
104 |
| ---- |
105 |
| - |
106 |
| -## Deliverables |
107 |
| - |
108 |
| -Once you have your application ready -- or long before -- it should be deployed to Heroku. Python students, you are in charge of this part! |
109 |
| - |
110 |
| ---- |
111 |
| - |
112 |
| -## Resources |
113 |
| - |
114 |
| -* [JSend](http://labs.omniti.com/labs/jsend). You need to decide what the JSON you send back and forth will look like. This is an incredibly simple format that will serve you well. |
115 |
| -* [Marshmellow](https://marshmallow.readthedocs.org/en/latest/). This library can convert your database models to JSON, JSON back into models, and also validate your data! Slim down your application: eat a marshmellow! Make sure to [look at their SQLAlchemy example](https://marshmallow.readthedocs.org/en/latest/examples.html#quotes-api-flask-sqlalchemy). |
116 |
| -* [pytest-flask](https://pypi.python.org/pypi/pytest-flask). You should test your API endpoints! It's a lot easier than it used to be with pytest-flask. I've already done the hard part for you. |
117 |
| -* If you're going to try to upload files to S3: |
118 |
| - * Try [Flask-Store](http://flask-store.soon.build/en/latest/) |
119 |
| - * If that doesn't work, check out https://github.com/doobeh/Flask-S3-Uploader and https://devcenter.heroku.com/articles/s3-upload-python |
120 |
| -* [Vega](https://trifacta.github.io/vega/). A simplified interface on top of D3 for charting. [NVD3](http://nvd3.org/) is another option. |
121 |
| -# python-toolshed |
| 1 | +The Python ToolShed! |
0 commit comments