generated from csc301-2023-winter/deliverable-documents
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
5b58ec1
commit 0c45476
Showing
1 changed file
with
155 additions
and
23 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,41 +1,173 @@ | ||
# YOUR PRODUCT/TEAM NAME | ||
# Volunteer Engagement App /TEAM 12 - United for Literacy | ||
|
||
The deployment link is: | ||
https://3nyqxuznpf.us-east-2.awsapprunner.com/ | ||
| ||
> _Note:_ This document is intended to be relatively short. Be concise and precise. Assume the reader has no prior knowledge of your application and is non-technical. | ||
| ||
## Description | ||
Keep this section very brief. | ||
* Provide a high-level description of your application and it's value from an end-user's perspective | ||
* What is the problem you're trying to solve? Is there any context required to understand **why** the application solves this problem? | ||
| ||
|
||
Our implementation is a web application that acts as a centralized location for volunteers and employees of the United For Literacy organization to access important documentation and services that correspond to their daily activities. | ||
|
||
The major problems that our partner, United For Literacy, is experiencing are that they do not have a centralized location to exchange vital information between the members of the organization such as volunteers, staff, and administrators. Their current process is tedious and time-consuming, consequently leading to a decline in volunteers working for the organization. Therefore, the application aims to simplify this process by introducing an efficient method to access data relating to the organization’s activities. | ||
|
||
|
||
## Key Features | ||
* Describe the key features in the application that the user can access. | ||
* Provide a breakdown or detail for each feature. | ||
* This section will be used to assess the value of the features built | ||
Newly implemented features | ||
* View all their recorded volunteer hours | ||
The user (volunteer) can keep track of all their volunteer hours. | ||
|
||
* See their achievements/ milestones in their volunteer hours | ||
This is an incentive for the user to volunteer more hours to unlock the achievements. The achievement badges are grayed out unless they have completed them. | ||
|
||
* Access to training resources | ||
The user can access training manuals and download them to their devices. | ||
|
||
* View program instances on the calendar | ||
The user can have a general overview of their volunteer scheduling for the current month. (The calendar events are added by the user for now) | ||
|
||
* View their profile details | ||
The user can now view their own profile data, including their name, user id, status, email, and phone number. | ||
|
||
* View their notifications | ||
The user can now view the notifications and is able to refresh to see new notifications manually | ||
|
||
| ||
## Instructions | ||
* Clear instructions for how to use the application from the end-user's perspective | ||
* How do you access it? For example: Are accounts pre-created or does a user register? Where do you start? etc. | ||
* Provide clear steps for using each feature described in the previous section. | ||
* This section is critical to testing your application and must be done carefully and thoughtfully. | ||
|
||
A user can login as an admin, staff member, or volunteer. | ||
Currently, the accounts are pre-created, but in the future, we will implement a sign-up and login functionality. | ||
|
||
Once the user selects the type of account they want to login as, they will see the homepage. | ||
|
||
Here, they can see programs they are enrolled in, training resources, the total volunteer hours they have, and they can write testimonials about their experience. | ||
|
||
Clicking on the green assigned programs module will take users to the programs page where they can see the programs/training they are enrolled in. | ||
|
||
Clicking on one of the assigned modules under training resources will take users to this page as well. | ||
|
||
Clicking on the volunteer hours module will take users to the track volunteer hours page. | ||
|
||
Finally, users can also click on the testimonial module in order to fill out a form and submit a testimonial about their experience (submitting the form is not implemented yet). | ||
|
||
On the left side of the screen, there are multiple tabs the user can visit. | ||
|
||
The homepage is as described above. | ||
|
||
The programs page allows users to see information about their enrolled programs and training. | ||
|
||
Users can click on a specific program to bring up more details about it, such as a description and event files. The resources page has a list of resources that can be downloaded. | ||
|
||
The calendar page has the user’s upcoming events on the calendar, and new events can be added by clicking on a date and entering a name for it. | ||
|
||
The track hours page is where the users can see the volunteer hours they have logged. | ||
|
||
The notifications page provides a user with relevant notifications depending on the programs/training they are enrolled in. | ||
|
||
The messages page allows users to communicate with other users of the platform such as supervisors and other volunteers. | ||
|
||
## Development requirements | ||
* What are the technical requirements for a developer to set up on their machine or server (e.g. OS, libraries, etc.)? | ||
* Briefly describe instructions for setting up and running the application. You should address this part like how one would expect a README doc of real-world deployed application would be. | ||
* You can see this [example](https://github.com/alichtman/shallow-backup#readme) to get started. | ||
|
||
|
||
## Prerequisites | ||
|
||
- [Node.js](https://nodejs.org/en/) 16.x | ||
- Recommend [fnm](https://github.com/Schniz/fnm) for Node.js version management | ||
- [pnpm](https://pnpm.io/) | ||
- [Docker](https://www.docker.com/) | ||
- [VS Code](https://code.visualstudio.com/) for the best experience | ||
- Don't forget to install the recommended VS Code extensions when prompted | ||
- Enable "Takeover Mode" for Vue type-checking - [Instructions](https://github.com/johnsoncodehk/volar/discussions/471) | ||
|
||
## Setup | ||
|
||
Run the following commands after cloning this git repository. | ||
|
||
```bash | ||
# Install Node.js dependencies | ||
pnpm install | ||
# Clean install (deletes build artifacts) | ||
pnpm run clean | ||
``` | ||
|
||
Add the following sensitive environment variables to the `.env` file to connect to a SalesForce environment. This application has been developed to integrate with United for Literacy's SalesForce environment as of December 4th, 2022. See [`server/trpc/salesforce-usage.md`](https://github.com/csc301-fall-2022/team-project-5-frontier-college-m/tree/main/server/trpc/salesforce-usage.md) for more details. | ||
|
||
```bash | ||
# Leave this as default | ||
DATABASE_URL="postgresql://root:password@localhost:5433/root?schema=public" | ||
|
||
# Fill in these values according to Salesforce sandbox | ||
SF_BASE_URL="https://frontiercollege--group467.sandbox.my.salesforce.com" | ||
SF_CLIENT_ID="<SalesForce Client ID>" | ||
SF_CLIENT_SECRET="<SalesForce Client Secret>" | ||
SF_USERNAME="<SalesForce Username>" | ||
SF_PASSWORD="<SalesForce Password>" | ||
``` | ||
|
||
For more information see [`server/trpc/README.md`](https://github.com/csc301-fall-2022/team-project-5-frontier-college-m/tree/main/server/trpc) | ||
|
||
## Development Server | ||
|
||
Run the following commands to start the development server. | ||
|
||
```bash | ||
# Start the development server | ||
pnpm run dev | ||
``` | ||
|
||
## Local Database | ||
|
||
Run the following commands to start the local database | ||
|
||
```bash | ||
# Start a local PostgreSQL instance | ||
# If this command fails make sure to start the Docker app | ||
docker-compose up -d | ||
|
||
# Migrate the database schema | ||
pnpm run db-migrate | ||
|
||
# Stop the local POstgreSQL instance when you're done | ||
docker-compose down | ||
``` | ||
|
||
|
||
|
||
|
||
|
||
## Deployment and Github Workflow | ||
| ||
Describe your Git/GitHub workflow. Essentially, we want to understand how your team members share codebase, avoid conflicts and deploys the application. | ||
| ||
* Be concise, yet precise. For example, "we use pull-requests" is not a precise statement since it leaves too many open questions - Pull-requests from where to where? Who reviews the pull-requests? Who is responsible for merging them? etc. | ||
* If applicable, specify any naming conventions or standards you decide to adopt. | ||
* Describe your overall deployment process from writing code to viewing a live application | ||
* What deployment tool(s) are you using? And how? | ||
* Don't forget to **briefly justify why** you chose this workflow or particular aspects of it! | ||
|
||
We have a master branch called “main” which is kept clean and working at all times. | ||
We split our tasks in the meetings, so we do not have conflicts. Each task will have its own branch name based on the nature of the task. | ||
After we complete the task in its branch, we will create a pull-request in which we will conduct a group code review on Discord to verify the pull requests and merge them to the main branch. | ||
|
||
We are using AWS ECR with Docker. The following is a detailed list of steps taken in the deployment process: | ||
|
||
Create a container ECR in AWS | ||
Create a repository in AWS | ||
Go to the repository you created and press “View Push Commands” and follow the steps to authenticate and push an image to your repository | ||
NOTE: if you are using windows, you may need to enable running | ||
scripts on this system. For more information, see about_Execution_Policies at https:/go.microsoft.com/fwlink/?LinkID=135170. | ||
Create a “Dockerfile” and “.dockerignore” in the root directory of the app for deployment instructions | ||
Build the application using Docker on Visual Studio Code | ||
Push the built image to the repository you just created in the AWS ECR | ||
Create an App Runner with the repository containing the newly pushed image | ||
Set the corresponding port number and any required environment variables (DOCKER_DEFAULT_PLATFORM=linux/amd64). Note that this is required for deployment on an M1 Mac. | ||
Finally, deploy the application | ||
| ||
The partners requested deployment to be made on AWS. | ||
|
||
## Licenses | ||
| ||
Keep this section as brief as possible. You may read this [Github article](https://help.github.com/en/github/creating-cloning-and-archiving-repositories/licensing-a-repository) for a start. | ||
| ||
* What type of license will you apply to your codebase? And why? | ||
|
||
We used Apache License, Version 2.0 | ||
|
||
* What affect does it have on the development and use of your codebase? | ||
Other people have the freedom to modify, distribute, and use the existing codebase. | ||
|
||
Copyright 2023 Heng-Kuan Chen, Sari Hammad, Ibrahim Bess, Meet Patel, Corinne Lee Slew, Fatimeh Hassan Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. | ||
|