# Code Catalog

## Description
The application stores a catalog and examples of coding snippets. The catalog would support general-purpose programming languages and scripts for environments that operate with those languages (SQL, JavaScript, JSTL, etc). The application would initially be populated with basic examples and allow users to submit examples. Public examples would have an admin providing curation of the list. The application would start off with simple examples of base concepts like loops, branching, arrays, etc. and then move on to examples which combine or nest two of the concepts. There would be links on each example page which take the user to related, combined, or nested examples.

## Project details
- Category: General
- Difficulty: 
- Suggested stack: Not specified
- Approval status: Approved

## Target users
### Anonymous User

### Registered User

### Administrator

## Tags
MVP, Notes

## User Stories
### Register
As an anonymous user, I need to be able to register as a user.

### Examples
As a registered user, I need to be able to view the default set of examples provided initially to a logged in user.

### Add Example
As a registered user, I need to be able to add an example, providing a title, identifying tags, a language type, and a code example.

### Attribution
As a registered user, I need to be able to provide attribution and/or source information for an example.

### Login
As a registered user, I need to be able to log in.

### Search
As a registered user, I need to be able to search examples by language, title, and tag

### Download
As a registered user, I need to be able to download a code example or copy a code example to a clipboard.

### Make Public
As a registered user, I need to be able to mark an example as public which would allow it to be seen by others. Examples marked as public are reviewed and approved prior to being available

### Admin Login
As an administrator, I need to be able to log into the system

### Approve Public
As an administrator, I need to be able to approve submitted examples as public.

### Edit Public
As an administrator, I need to be able to edit public examples

### Set Examples
As an administrator, I need to be able to edit the initial set of examples provided for new users.

### Languages
As an administrator, I need to be able to edit the list of languages and scripts.
