recruitment and job seeking for medical professionals
Service | Directory | Description |
---|---|---|
Hospital Jobs Accounts | apps/accounts | Authentication/ Accounts UI |
Hospital Jobs Recruiter Portal Core | apps/recruitment-portal-core | Recruitment platform UI |
Hospital Jobs Recruiter Dashboard | apps/recruitment-dashboard | Recruitment platform UI |
Hospital Jobs | apps/seeker-portal | Job Seeker platform UI |
Hospital Jobs API | server | GraphQL API Server |
E2E Test Suite | e2e | Playwright End-To-End Tests |
Infrastructure | infrastructure | Terraform Infrastructure as Code |
This project has a proprietary license. Read the entire license here
Tool | Minimum Tested Version | Description |
---|---|---|
Docker Engine | 4.35 | Container runtime |
TMUX | 3.2a | Terminal Multiplexer |
Tmuxinator | 3.0 | TMUX session manager |
Terraform | v1.12.1 | Infrastructure as Code tool |
Watchman | 20250525.093350.0 | File watching service |
Relay Compiler | 19.0.0 | GraphQL Codegen Toolkit |
Pre-Commit | 4.2.0 | Git Hooks Framework |
MKCert | 1.4.4 | Locally trusted certificate generator |
Go through the setup guides of the services above, which covers installation of required dependencies, and other service specific setup tasks.
To set up the git hook scripts, run the following command:
pre-commit install
First, create a directory for your certificates and run mkcert to generate them:
mkcd certs
mkcert -install
mkcert -cert-file ./localtest.me.pem -key-file ./localtest.me-key.pem "localtest.me" "*.localtest.me"
This will generate:
-
A certificate:
localtest.me.pem
-
A private key:
localtest.me-key.pem
These are signed by a locally installed Root Certificate Authority (CA).
⚠️ Note: While this certificate is trusted within WSL and some development tools, browsers on Windows (Chrome, Edge, Firefox) won’t trust it until the Root CA is added to Windows’ trust store.
To make Windows-based browsers trust the generated certificate:
Open the mkcert CA root directory in Windows File Explorer:
cd "$(mkcert -CAROOT)"
explorer.exe .
- Locate the
rootCA.pem
file (you may need to rename it torootCA.crt
for compatibility). - Double-click the file to open the Certificate Information window.
- Click "Install Certificate…".
- Choose “Local Machine” (requires admin access) or “Current User”.
- Select:
- Place all certificates in the following store
- Click Browse
- Choose Trusted Root Certification Authorities
- Complete the wizard by clicking Next → Finish.
- Restart your browser(s) for the changes to take effect.
To start all services in development, run the following command:
tmuxinator start medical_jobs
-
Stop the currently running services:
tmuxinator stop medical_jobs
-
Start the docker compose E2E services:
docker compose -f docker-compose.e2e.yml up --wait --build --remove-orphans -d
-
Run the E2E tests:
cd e2e pnpm run test
Follow these steps to deploy the project to the cloud:
- Install the MongoDB Atlas CLI
- Setup Payment Method
- Copy the MongoDB Organization ID from the dashboard and store it in environment variables
- Run the follow commands to generate API keys:
atlas organizations apiKeys create --role ORG_OWNER --desc "My API Key" --orgId <ORG_ID> --output json
- Log in to the AWS Management Console
- Create a new AWS account/ log into an existing account
- Create a new IAM user (to be used by terraform)
- Add the
"arn:aws:iam::aws:policy/AdministratorAccess"
managed IAM policy to the user
- Create Access Keys for the user (choose access key for CLI, SDK, & API access)
- Go to the google cloud console
- Create/ select a new project
- Configure the Oauth consent screen
- Go to "APIs & Services" > "Credentials", and create new Oauth 2.0 Credentials
- While creating the credentials, fill in the following information:
-
Client config:
- Authorized Javascript origins:
- Authorized Redirect URIs:
-
Project Branding config:
- App name: Hospital Jobs
- App Domain:
- Application home page: https://hospitaljobs.in
- Application privacy policy link: https://hospitaljobs.in/privacy
- Application terms of service link: https://hospitaljobs.in/terms
- Authorized domains:
- hospitaljobs.in
-
OAuth Consent Screen Configuration:
- Under "Scopes", add the following scope:
https://www.googleapis.com/auth/user.phonenumbers.read
- Request verification for your OAuth app to ensure compliance with Google's policies
- Under "Scopes", add the following scope:
-
- Go to the Cloudflare dashboard
- Login to your cloudflare account
- Under Manage Account / Account tokens, click on "Create Token"
- Go to GitHub developer settings
- Create a new GitHub access token with permissions for the current repository:
- secrets: read and write
- variables: read and write
- administration: read and write
- Create a new organization
- Install the Sentry GitHub Integration (repository linking is automated)
- Create a Sentry Authentication Token (via an internal integration)
- Go to the Redis Cloud Console
- Configure a payment method
- Enable programmatic access to the cloud console (Under Access Management > API Keys)
- Crea 8000 te an API key (AKA Secret Key)
- Copy the Account Key (AKA Access Key) and API Key (AKA Secret Key)
- Go to the PostHog Console
- Create a new project
- Copy the project API key and host
To set up a WhatsApp Business API account using Meta's developer tools, follow these updated instructions based on the latest Meta documentation. The process involves creating a Meta Developer Account, setting up a WhatsApp Business Account, and configuring the necessary components for API access.
-
Create a Meta Developer Account
- Visit the Meta for Developers website.
- Sign in with your Facebook account or create a new one. If you don’t have a Facebook account, you’ll need to create one.
- Once logged in, register as a developer by following the prompts to set up your Meta Developer Account.
-
Access the Meta Business Manager
- Go to Meta Business Manager.
- If you don’t have a Business Manager account, click Create Account and follow the steps to set up a new business account.
- Provide the required business details (e.g., business name, address, and contact information).
- Once created, note down the Business Manager ID (found in the Business Settings under Business Info).
-
Create a System User in Business Manager
- In the Meta Business Manager, navigate to Settings > Business Settings > Users > System Users.
- Click Add to create a new system user.
- Assign a name to the system user and select the Admin role for full access to WhatsApp-related assets.
- Save the system user and generate an access token later in the process.
-
Create a New Meta App in the Developer Portal
- Go to the Meta for Developers portal.
- Click Create App, select Business as the app type, and provide the required details (e.g., app name and contact email).
- Once the app is created, go to the app’s dashboard and add the WhatsApp product by clicking Set Up under the WhatsApp option.
-
Assign the App to the System User and Generate an Access Token
- In Business Manager, go to Settings > Business Settings > Users > System Users.
- Select the system user created in Step 3.
- Click Assign Assets, choose the app created in Step 4, and assign the appropriate permissions (e.g., Manage App).
- Click Generate New Token, select the app, and ensure all WhatsApp-related permissions are enabled (e.g.,
whatsapp_business_management
,whatsapp_business_messaging
). - Copy the System User Access Token and store it securely, as it will be used for API authentication.
-
Set Up a WhatsApp Business Account
- In the Meta Business Manager, navigate to Settings > Business Settings > Accounts > WhatsApp Accounts.
- Click Add to create a new WhatsApp Business Account.
- Follow the prompts to link it to your Business Manager account. This may involve verifying your business details.
-
Add a Phone Number to the WhatsApp Business Account
- In the WhatsApp Accounts section of Business Manager, select the newly created WhatsApp Business Account.
- Click Add Phone Number and provide a phone number that hasn’t been used with WhatsApp before (it cannot be linked to an existing WhatsApp account).
- Verify the phone number via SMS or voice call as prompted.
- Configure the phone number settings, such as the display name and business profile details, following Meta’s guidelines.
-
Obtain the WhatsApp Business Phone Number ID
- Once the phone number is added and verified, go to Settings > Business Settings > Accounts > WhatsApp Accounts.
- Select the WhatsApp Business Account and locate the Phone Number ID (also called the WhatsApp Business Phone Number ID).
- Copy the Phone Number ID for use in API requests.
- Go to the Two Factor IN Console
- Create a new account
- Copy the API key
- Create an S3 bucket that will act as the terraform state backend
Terraform deployments are automated via GitHub Actions CI/CD. the following GitHub actions variables and secrets need to be set to enable deployments:
GitHub Actions Variables:
TERRAFORM_AWS_BACKEND_BUCKET_NAME
TERRAFORM_AWS_REGION
CLOUDFLARE_ACCOUNT_ID
MONGODB_ATLAS_ORG_ID
WHATSAPP_PHONE_NUMBER_ID
POSTHOG_API_HOST
GitHub Actions Secrets:
TERRAFORM_AWS_ACCESS_KEY_ID
TERRAFORM_AWS_SECRET_ACCESS_KEY
CLOUDFLARE_API_TOKEN
PA_TOKEN_GITHUB
MONGODB_ATLAS_PRIVATE_KEY
MONGODB_ATLAS_PUBLIC_KEY
GOOGLE_OAUTH_CLIENT_ID
GOOGLE_OAUTH_CLIENT_SECRET
SENTRY_AUTH_TOKEN
REDISCLOUD_SECRET_KEY
REDISCLOUD_ACCESS_KEY
WHATSAPP_ACCESS_TOKEN
TWO_FACTOR_IN_API_KEY
POSTHOG_API_KEY
During the initial terraform deployment:
- update the domain registrar (GoDaddy/ NameCheap/ Google Domains)'s NS records to the Route 53 nameservers midway, to ensure certificate validation takes place
After automated deployment, you need to:
- Request SES production access manually on AWS
- Join the created team on sentry with your account
- Grant access to the following Models in AWS Bedrock:
- Amazon Nova Micro V1
- Amazon Nova Lite V1
- Amazon Nova Pro V1
- Amazon Titan Text Embeddings V2