Skip to content

Commit 00c5d0f

Browse files
committed
Update README.md
1 parent 6547745 commit 00c5d0f

File tree

1 file changed

+1
-121
lines changed

1 file changed

+1
-121
lines changed

README.md

+1-121
Original file line numberDiff line numberDiff line change
@@ -1,121 +1 @@
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

Comments
 (0)