Skip to content

Latest commit

 

History

History
33 lines (31 loc) · 4.09 KB

ARCHITECTURE.md

File metadata and controls

33 lines (31 loc) · 4.09 KB

Architecture

This is intended to serve as a "table of contents" for each file in this project, since they can be confusing. If you add a new directory or file, please update the table of contents so everyone is on the same page.

.expo - an autogenerated directory for use by expo. No need to change this
.expo-shared - an autogenerated directory created by expo init. No need to change this
.github - a directory containing files used by Github
-| workflows - a directory containing our Github workflows - actions for Github to perform on our repository automatically. This is used for setting up continuous integration (CI) and continuous deployment (CD).
.husky - a folder for the module "husky". husky let's us set up git "hooks" - things that are run automatically when certain git actions are performed
assets - contains "assets" for the app - images, sounds, etc. screens - contains the parent views for use with react-navigation -| CameraScreen.tsx - Contains CameraView -| TranscriptionView.tsx - Handles the processing of the image and does the object detection components - these contain our custom React components and views. This is the main visual backbone of the app, as components are used to build views, and views are switched between to create the system known as the app. If a custom graphical component is displayed, odds are the source for it can be found in here.
-| CameraView.tsx - source code for the view the user sees while trying to take a photo
-| PhotoButton.tsx - source code for our custom button the user presses to take photos
-| TranscriptionView.tsx - source code for the view the user sees while examining the text result obtained from a photo
data - this contains information related to the machine learning model we are using for this app
node_modules - this directory contains all of the external libraries made by others that we are using functionality from. This is autogenerated when you run yarn, no need to edit anything in here manually.
scripts - useful programs to run for our workflow, but provide no functionality directly within the app util - a folder for functions that do not quite belong in a component, but are still used directly in the app
.eslintrc.js - a configuration for ESLint. ESLint is the tool we are using to check that our code style is consistent
.gitignore - a list of files and directories that git add will never try and stage. These are mostly autogenerated files.
.prettierignore - a list of files and directories that Prettier will not edit. Prettier is a tool we are using to check that our code format is consistent.
app.json - this contains metadata about our app that phone's OS uses.
App.tsx - a React Component that houses all of our components and views. Think of this as the main function in a typical Java or C# project.
babel.config.js - a configuration file for Babel. Babel is a tool that we are using to translate our TypeScript code into code that is readable by a browser. Think of Babel sort of like a compiler, but not quite as low-level.
LICENSE - the license for this project. Here for legal reasons, it defines what other people outside of the club can and cannot do with our code.
package.json - project metadata that npm and yarn uses. The most useful function of this file for us is that a it maintains a list of the external libraries we are using.
prettier.config.js - a configuration file for Prettier, the tool described above.
tsconfig.json - a configuration file for Typescript. This project is written in TypeScript, which is based on Javascript. This file lets you change how closely you have to file the Typescript rules. This should not be changed unless a majority of the project participants agree it needs to be changed.
use_case.md - a description of how the app is intended to used. This gives us an idea of what we need to design and build.
yarn.lock - an autogenerated file by yarn that documents all the external libraries that this project uses, even the external libraries each external library uses. This should not be changed manually.