<commit_before># communitask

This is a simple to-do list / task manager for recurring tasks, designed to meet the needs of a family or collaborative group of people.

## Project status

This is a work in progress, although it may not ever progress into a usable project. You can do whatever you like with it (within the confines of an open-source BSD license) but don't expect it to be useful at this point.

## README-driven development

This project provides a single-page application intended to provide:

* A framework for defining tasks (or to-do items) that are often but not always recurring.
* A record of tasks that have been completed, by whom and when.
* A system for tracking contributions to the community through completion of tasks.
* A means for reporting the human energy put into a community.

## Components

RESTful service layer:

* Services supported by this project are written in Restify.js running on Node.js and hosted on DigitalOcean or any similar virtual private server.

Data layer:

* Objects are stored in a CouchDB.

Client layer:

* The client users the Twitter Bootstrap framework.
* The client is a single-page web application using Backbone.js. (Angular?)

### Community class

A community is the top level organizational structure, the "customer" of the application.

Properties:

* id
* name
* owners
* status: created, deleted

JSON API:

* ```/communities/?name={name}&owners[]={owners}&status[]={status}&deleted=true```
	* GET: Return list of communities to which the authenticated user has access. Optionally filter by name, owners, and/or status.
	* POST: Create a new community with the authenticated user as owner.
* ```/communities/{id}/```
	* GET: Return details about the specified community.
	* PUT: Update details about the specified community.
	* DELETE: Mark the specified community as deleted.
* ```/communities/{id}/members/```
	* GET: Return a list of members of the specified community.
	* POST: Invite a member to the specified community.
* ```/communities/{id}/members/{id}/```
	* GET: Returns details about the specified member only if the member exists and is a member of the given community.
	* DELETE: Remove the member from the community (or rather, remove the community from the member's account.)
* ```/communities/{id}/owners/```
	* GET: Return a list of community account owners.
	* POST: Add a new owner to the list of community account owners.
* ```/communities/{id}/owners/{id}/```
	* GET: Returns details about the specified owner only if the owner exists and is an owner of the given community.
	* DELETE: Remove the member's owner status for the specified community.

### Member class

Access is limited to invited members, and completed tasks are tracked by member.

Properties:

* id
* name
* email address
* phone number
* communities
* avatar
* status: invited, accepted, confirmed, deleted, super

JSON API:

* ```/members/?community[]={community}&status[]={status}&deleted=true```
	* GET: Return a list of members grouped by community with whom the authenticated user is connected. Optionally filter by community and status.
	* POST: Create a new member.
* ```/members/{id}/```
	* GET: Return details about the requested user if the authenticated user is connected.
	* PUT: Update the specified user.
	* DELETE: Mark the specified user as deleted.

### Task class

A Task.

Properties specific to a scheduled task:

* id
* title: A concise, human-friendly way of describing the task.
* description: A verbose description of the task.
* community: The community to which this task belongs.
* categories: A list of tags or categories that relate this task to other tasks.
* creator: The ID of the member who created the task.
* createdOn: The timestamp when the task was created.
* status: created, shared, accepted, deleted, done
* owner: The ID of the member who owns the task.
* due: When the task should be complete.<commit_msg>Changed member status<commit_after># communitask

This is a simple to-do list / task manager for recurring tasks, designed to meet the needs of a family or collaborative group of people.

## Project status

This is a work in progress, although it may not ever progress into a usable project. You can do whatever you like with it (within the confines of an open-source BSD license) but don't expect it to be useful at this point.

## README-driven development

This project provides a single-page application intended to provide:

* A framework for defining tasks (or to-do items) that are often but not always recurring.
* A record of tasks that have been completed, by whom and when.
* A system for tracking contributions to the community through completion of tasks.
* A means for reporting the human energy put into a community.

## Components

RESTful service layer:

* Services supported by this project are written in Restify.js running on Node.js and hosted on DigitalOcean or any similar virtual private server.

Data layer:

* Objects are stored in a CouchDB.

Client layer:

* The client users the Twitter Bootstrap framework.
* The client is a single-page web application using Backbone.js. (Angular?)

### Community class

A community is the top level organizational structure, the "customer" of the application.

Properties:

* id
* name
* owners
* status: created, deleted

JSON API:

* ```/communities/?name={name}&owners[]={owners}&status[]={status}&deleted=true```
	* GET: Return list of communities to which the authenticated user has access. Optionally filter by name, owners, and/or status.
	* POST: Create a new community with the authenticated user as owner.
* ```/communities/{id}/```
	* GET: Return details about the specified community.
	* PUT: Update details about the specified community.
	* DELETE: Mark the specified community as deleted.
* ```/communities/{id}/members/```
	* GET: Return a list of members of the specified community.
	* POST: Invite a member to the specified community.
* ```/communities/{id}/members/{id}/```
	* GET: Returns details about the specified member only if the member exists and is a member of the given community.
	* DELETE: Remove the member from the community (or rather, remove the community from the member's account.)
* ```/communities/{id}/owners/```
	* GET: Return a list of community account owners.
	* POST: Add a new owner to the list of community account owners.
* ```/communities/{id}/owners/{id}/```
	* GET: Returns details about the specified owner only if the owner exists and is an owner of the given community.
	* DELETE: Remove the member's owner status for the specified community.

### Member class

Access is limited to invited members, and completed tasks are tracked by member.

Properties:

* id
* name
* email address
* phone number
* communities
* avatar
* status: invited, confirmed, deleted, super

JSON API:

* ```/members/?community[]={community}&status[]={status}&deleted=true```
	* GET: Return a list of members grouped by community with whom the authenticated user is connected. Optionally filter by community and status.
	* POST: Create a new member.
* ```/members/{id}/```
	* GET: Return details about the requested user if the authenticated user is connected.
	* PUT: Update the specified user.
	* DELETE: Mark the specified user as deleted.

### Task class

A Task.

Properties specific to a scheduled task:

* id
* title: A concise, human-friendly way of describing the task.
* description: A verbose description of the task.
* community: The community to which this task belongs.
* categories: A list of tags or categories that relate this task to other tasks.
* creator: The ID of the member who created the task.
* createdOn: The timestamp when the task was created.
* status: created, shared, accepted, deleted, done
* owner: The ID of the member who owns the task.
* due: When the task should be complete.
{'fraction_non_alphanumeric': 0.08224609874648248, 'fraction_numerical': 0.0, 'mean_word_length': 4.311820652173913, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6659524', 'n_tokens_mistral': 2050, 'n_tokens_neox': 1995, 'n_words': 1090}