MERN stack application for appointment booking and employee/client management
MIT License
<a href="https://www.youtube.com/watch?v=6skXNTfSanQ">Watch Video Demo</a>
<a href="https://github.com/amamenko/GlowLabs/issues">Report Issue</a>
Glow Labs, a small business, has been using Square for booking appointments, managing clients and employees, and as a point of sale (POS) system. Its website, built by using Wix, displays its Square booking workflow in an iframe. It has also been using WaiverForever for handling consent forms - clients are not able to receive copies.
Square Appointments does not charge a monthly subscription fee if there is only one staff member. However, a monthly charge of $50 for 2-5 members and $90 for 6-11 members (and even more for even larger teams) is incurred. Glow Labs has several staff members and therefore has to pay a monthly fee. Square's POS system is free to use and there are no setup fees or monthly subscription fees.
Ideally, appointments, consent forms, and profile management would all be handled on the same domain. Also, sensitive client-entered credit card information should be handled securely and integrated with Square's POS system.
This is a MERN (MongoDB, Express, React, Node.js) stack application that uses Redux for state management and Apollo Client to fetch data from a MongoDB database via GraphQL. It has some of the following features:
Responsive design, SEO, and performance optimizations by means of:
Guest clients are able to:
Authenticated clients are able to do all of the above, as well as:
Authenticated staff members are able to:
Authenticated staff members with "admin" status are also able to:
Server deployed via AWS EC2 instance with NGINX and SSL secured with Let's Encrypt. Client-side deployed with Vercel. Custom domain from Freenom with DNS routing by Cloudflare.
To develop this project locally, follow the steps below.
You will need to have the following software installed:
git clone https://github.com/amamenko/GlowLabs.git
cd Client
npm install
REACT_APP_GOOGLE_MAPS_API_KEY=YOUR GOOGLE MAPS API KEY
REACT_APP_SQUARE_SANDBOX_APPLICATION_ID=YOUR SQUARE SANDBOX APPLICATION ID
REACT_APP_SQUARE_SANDBOX_LOCATION_ID=YOUR SQUARE SANDBOX LOCATION ID
REACT_APP_SQUARE_SANDBOX_ACCESS_TOKEN=YOUR SQUARE SANDBOX ACCESS TOKEN
cd ..
npm install
SQUARE_SANDBOX_ACCESS_TOKEN=YOUR SQUARE SANDBOX ACCESS TOKEN
TWILIO_ACCOUNT_SID=YOUR TWILIO ACCOUNT SID
TWILIO_AUTH_TOKEN=YOUR TWILIO AUTH TOKEN
GLOW_LABS_TEXT_NUMBER=YOUR TWILIO TEXTING NUMBER
TWILIO_TEST_TEXT_NUMBER=YOUR OUTBOUND TEST TEXT NUMBER
FACEBOOK_APP_ID=YOUR FACEBOOK APP ID
FACEBOOK_APP_SECRET=YOUR FACEBOOK APP SECRET
JWT_SECRET_KEY_DUMMY=YOUR DUMMY JWT KEY
JWT_SECRET_KEY_ACCESS=YOUR ACCESS JWT KEY
JWT_SECRET_KEY_REFRESH=YOUR REFRESH JWT KEY
MONGO_DB_USERNAME=YOUR MONGODB USERNAME
MONGO_DB_PASSWORD=YOUR MONGODB PASSWORD
GOOGLE_PUB_SUB_PROJECT_ID=YOUR GOOGLE CLOUD PUB/SUB PROJECT ID
GOOGLE_PUB_SUB_CLIENT_EMAIL=YOUR GOOGLE CLOUD PUB/SUB CLIENT EMAIL
GOOGLE_PUB_SUB_PRIVATE_KEY_PART_ONE=PART ONE OF YOUR GOOGLE CLOUD PUB/SUB PRIVATE KEY
GOOGLE_PUB_SUB_PRIVATE_KEY_PART_TWO=PART TWO OF YOUR GOOGLE CLOUD PUB/SUB PRIVATE KEY
GLOW_LABS_EMAIL=YOUR EMAIL
GLOW_LABS_EMAIL_APP_PASSWORD=YOUR EMAIL PASSWORD
npm run build
Contributions are welcome!
git checkout -b feature/MyFeature
)git commit -m 'Add my feature'
)git push origin feature/MyFeature
)Distributed under the MIT License. See LICENSE.txt
for more information.
Avraham (Avi) Mamenko - [email protected]
Project Link: https://github.com/amamenko/GlowLabs