Table of Contents
About Avalunch
Avalunch is the brain-child of ICS 314 classmates, Anh Lam @anhlam, Edmund Ho @sorazodia, and Clark DeNunzio @unjammy. Our software aims to become the visual solution to the problem of contemplating meal decisions during students precious lunch breaks. At first glace, our application will provide the following landing page to explain our product.
Anyone with a UH Username and Password may sign into our app, as this app will be using the UH CAS authentication API. The next following page will accept user credentials and allow access to the following screens.
The user will then gain access to start a generic, user-independent search of the current listing inside the app database.
This app was designed to be customized by the user to create a dynamic, exciting experience. In addition to generic searches, the user will also be allocated a preferences and admin configuration for generating automated recommendations.
Once fully configured, the app will begin to generate user-dependent listings of relevant food items based on style, price, and location.
In addiction, the user will be able contract other students for delivery
Application Design
Directory Structure
This project is based off of the UH ICS Deparment’s Meteor Application Template and likewise we will be using a similar directory structure. We feel this choice will allow us to perform more agile development as all team members already have a working knowledge of hacking the aforementioned template.
Our directory structure will organize the meteor application into a directory called /app
and within, all of the dependencies for the project will be located, as well as, the source code for our later sections of the Application Design.
Import Conventions
Our project will be making extensive use of the following technologies including Meteor, and those that are natively bundled with Meteor.
- Meteor
- Blaze Template Engine
- MongoDB
As such, our source code will make extensive use of imports from these libraries.
Data Model
Our goal is to follow a similar data model of Techfolios. As an out-of-the-box feature, we intend to include a checkbox style Preferences
page and Admin
page. Using these forms, event handlers will control a JSON object with a UUID, which can then be referenced against when performing Map-Reduces against our item database.
The data model will include two Collections
that will be used to create the dynamic experience of this application. One collection named Users
will contain objects with keys of true or false values for Preferences
offered inside the application. This will then be used to query a second collection named Items
which will contain objects of keys of properties about food items in the school-wide menu.
By using a data-first model, our team is believed to gain a factor toward a more enjoyable, and agile development experience.
CSS
As mentioned before, it was agreed that using the Meteor Application Template would allow more agile development, therefore the choice was made to continue using the templates built-in Semantic UI functionality.
Let it be noticed that extensive use of the ui container
class and ui image
class will be throughout this app to exploit the spacing characteristics of Semantic UI. By avoiding to hard-code the UI layout, our team is believed to have an edge in agile development.
Routing
As mentioned, in the Import Conventions segment, Blaze router was chosen to inject HTML templates into our Meteor application. This is a built-in functionality of Meteor, thereby using Blaze, our team gains an edge toward agile development as no additional software is needed for our stack.
Authentication
Configured with the official Meteor Application Template is an authentication script for the UH Manoa CAS, which handles the University-wide login adminstration. This application will access UH CAS via API calls and authenticate users as valid logins.
Configuration
The repository contains one file: config/settings.development.json.
The .gitignore file prevents a file named settings.production.json from being committed to the repository. So, if you are deploying the application, you can put settings in a file named settings.production.json and it will not be committed.
Quality Assurance
ESLint
By choosing the UH Manoa Meteor Application Template, the option to use ESLint to debug our code was included out-of-the-box. Our source code includes a .eslint
and .eslintrc
file included in it’s top level directory. These files when configured correctly, allowed our team to comply with the AirBNB Javascript standards out-of-the-box, thus giving yet another edge in agile development
Development History
Milestone 1: Mockup Development
Milestone 2: Data Model Development
Milestone 3: Refinement
![](/images/m3.png)
![](/images/Screen%20Shot%202017-05-09%20at%2020.57.39.png)
![](/images/Screen%20Shot%202017-05-09%20at%2020.57.54.png)
![](/images/Screen%20Shot%202017-05-09%20at%2020.55.57.png)
![](/images/Screen%20Shot%202017-05-09%20at%2020.56.58.png)
![](/images/Screen%20Shot%202017-05-09%20at%2020.57.09.png)
More exciting features are on it’s way, please reference our Data Model segment to see the current plans for this milestone! Stay tuned, as this is a learning experience, and may change over time. Please pay attention to our mistakes and how we have learned from them so you may have a more enjoyable and agile development experience in the future.