Code repository: https://github.com/Enteee/ch.bfh.bti7054.w2014.p.webshop
Source code
We're selling source code on our webshop. People can upload source code and other people can buy source code from them. The basis for trading is a virtual currency which is only valid on our page.
- Snippets
- Scripts
- Full software
- Classes
- Frameworks
- Source code in other languages
- With/Without comments
- Support
- Different versions
- Hello world
- Bubble sort
- Quick sort
- ...
Tommy
- Gender: Male
- Age: 35
- Skills: Managing, social skills
- Job: Project manager
- Interest: Can not code, but needs to buy ideas / example implementations for project X
- Income: Money from project
Marc
- Gender: Male
- Age: 25
- Skill: Basic coding
- Job: New coder in project x
- Interest: Can not code that good. Needs implementation examples and support from experienced coders
- Income: 2500.-
Actors: Tommy, Shop
Intention: Tommy want's to buy source code
Preconditions: Tommy has virtual money
Postconditions: Tommy gets source code as archive
- Tommy logs in
- Tommy enters a search text in the search field
- Tommy gets a list of search results
- Tommy gets information to products
- Tommy selects one of them
- Tommy chooses extensions
- Tommy puts the item in his basket
- Tommy can continue shopping
- Tommy preceeds to checkout
- Tommy gets a overview of his order
- Tommy sends accept
- He can now dowload the source code
Actors: Marc, Shop
Intention: Marc want's to sell source code
Preconditions: Marc has a account
Postconditions: Source code of marc is ready for purchase
- Marc logs in
- Marc goes to 'my code'-page
- Marc uploads a project
- Marc adds information. Description, language, version
- Marc adds tags
- Marc publishes source code
- Login form
- Text search input
- Search results page
- Expand result
- Shopping basket
- Checkout page
- "my code"-page
- Project upload
- Project information add page
- Project tagging
- Project publishing
- Simplicity
- Responsive design
Name: CodeShop
Address: codeshop.ch
- Show products
- Search
- Browse by category
- Show product details
Only registered users:
- My orders (only registered users)
- My offers
- Add offer
- Bootstrap & jquery integrated
- Top navigation for registered user
- Side navigation with product categories
- Animated list with jquery
- More information on click
- Start rating
- AVG rating
- CSS, JavaScript and PHP classes as external files
- Classes are loaded by a class loader
- MVC pattern used with controllers and methods to provide access over one single page
- language resources are stored in a .json file
- search works in any language
- Show price for products (+ dynamic pricing, customization)
- Different offers per product (by programming languages)
- Feature not implemented, bought files are downloadable instead
- Checkout into shopping cart
- Confirmation view before buy
- Confirm email (only when send mail is configured correctly)
- MVC pattern with controller classes and view templates
- URI routing: /{language}/{controller}/{method}
- SaveVars: typed superglobals
- Confirm box in the confirm overview
- HTML 5 form validation in the "add code" form
- Rating of products
- Adding reviews without reloading the page
- Language of user is stored in a cookie
- $_COOKIE wrapped in SaveVars
- Shopping cart on the left side
- Removing of items via AJAX
- Problem solved by using Google Identity Toolkit no need for password saving
- Login with Gmail account
- Initial design
- Propel generated objects used
- Multiple classes for various functions (Language, Repository, Session...)
- Database created and designed with MySQL Workbench
- Code generated with Propel ORM
- Populate controller to insert data
- "Add code" form to add new products (no admin function, every user can add code)
- Integrated Wikipedia api for further product description
- Adding reviews works with AJAX
- Removing items from shopping cart is also based on AJAX
- Created own simple template system based on our MVC engine
- Validation of language and country codes
- Parsing of user language over browser
- Parsing of uri
- Install script
- ZIP extract (with password from form)
- Composer vendor libraries installation
- Populate database (populate controller)
- Document installation