candidate-apollo-app is a simple CRUD (Create Read Update Delete) capable mobile app powered by React Native with Apollo GraphQL x Express as backend server and MongoDB x mongoose as database. (aka MERN stack)
It's essentially two applications:
- Frontend mobile app (
./client
) - Backend server (
./server
)
You can find the docs (like app structure, features and notes) at ./docs
candidate-apollo-app requires Node.js and a mobile phone or emulator (preferably Android) to run.
Run start_project.bat
if you're using Windows, or open your favorite Terminal and run these commands. (every terminal is starting from root directory!)
Before running
start_project.bat
be sure to createmongodb_path.txt
that contains the directory of your MongoDB database in the first line
Also, before running anything add your own environment variable file (
.env
) in both./client
&./server
, see.env.example
for reference
Also also, for Skill's page tiles, add your own
tileplaceholder.jpg
at./client/img/
(temporary solution)
Start up MongoDB:
$ mongod --dbpath="path"
Server:
$ cd server
$ npm run start
Client First Terminal:
$ cd client
$ yarn start
Client Second Terminal:
$ cd client
$ npx react-native run-android/run-ios
(optional) If you're running on an Android emulator:
$ cd client
$ adb reverse tcp:8080 tcp:8080
Note that the server uses port 8080!
Want to contribute? Great! But we are not currently accepting any contributors as this is a short-sighted program requested by a company for me to test my programming prowessness!
Just fork it if you want!
I graduated near the end of 2020 with a neat Computer Science degree from Monash University. So I do what most fresh grads do, I apply to jobs. And one company requested me to write a test project (CRUD) with the technologies listed above (except the database, they allowed me to choose what to use), all within a week. I didn't know most of these techs (it was on purpose by them :o). I really only knew React at the time, and have just learned how to use Express three days prior. Also, I have spent the first two days configuring the project and learning the basics as I go. Naturally I am worried and stressed, so I went more spaghettier than I would have liked in terms of writing code. But at least I have learned much from this exprience!
Time taken: 7 days (23th December 2020 - 30th December 2020)
LavaX for forcing me to learn faster.
GNU General Public License v3.0