The goal of this project is to design and implement the full-stack database application in which the database backend is to be implemented on cloud. We built a cross-platform hybrid mobile application that allows users to post and view different recipes. Some of the features include:
- User Registration
- Ability to post recipes
- Update/delete existing recipes
- Search for specific recipes
- Save your favorite recipes
├── assets
├── client
│ ├── ios
│ ├── android
│ ├── src
│ ├── index.js
│ ├── package.json
├── server
│ ├── controllers
│ ├── routes
│ ├── views
│ ├── app.js
│
assets/
: store additional screenshots/diagramsclient/
: store front-end code (mobile app)server/
: store back-end code to communicate with client, and all logics to communicate/connect with Azure Dabatase
See
README
underclient
directory andserver
directory for more details.
- Front-End: React Native
- Back-End: Node.js (with Express.js web framework)
- Database: Azure Database For MySQL
- Cloud Deployment (PaaS): Heroku
The database schema above has been normalized into Four Normal Form (4NF), and there is no multi-valued dependencies. Azure Database For MySQL is used for data storage, querying and managing data.
Database functionalities that were used in the application includes:
- Transactions
- Views
- Indexing
- Constraints (Keys, Attribute-based and Tuple-based check)
- Triggers
- Stored Procedure and Functions
- Security and Authorization
In the terminal:
- Navigate to the server directory:
cd server
- Run:
npm install
(you only need to execute this for the first time or whenever new dependency is added) - Start the app:
npm start
- Go to your browser:
http://localhost:8080/
Note: Port number and server IP address can be updated in:
./server/bin/www
See
README
underserver
directory for more details.
In another terminal:
- Navigate to the client directory:
cd client
- Run
npm install
to install all dependencies. - Run
npm start
to start the app - Run on iOS:
react-native run-ios
- Run on Android:
react-native run-android
See
README
underclient
directory for more details.
Both client and server code are currently deployed to Heroku: https://vast-bastion-59857.herokuapp.com/
- Push the latest code from master branch to Heroku (admin only):
git subtree push --prefix server heroku master
- Access the front-end of the NodeJS application:
heroku open
- Restart the server:
heroku restart
- Display recent logs output:
heroku logs
See here for more commands on how to monitor heroku logs: Heroku Log Commands
View all Heroku commands: Heroku CLI Commands
Sign-up | Sign-in | Homepage | User Account |
---|---|---|---|
Post a New Recipe | Post a New Recipe | Upload Recipe | View All Recipes A Current Logged-in user Posted |
---|---|---|---|
View Recipe Full Details | Edit Recipe Name | Recipe With Updated Name | Delete Recipe |
---|---|---|---|
Search Recipes From Any Users | Search Recipes From Any Users | View Recipe Full Details | |
---|---|---|---|