Rename project to MerchantsOfHope-SupplyANdDemandPortal

This commit is contained in:
2025-10-16 17:11:25 -05:00
parent 039d51c4e5
commit 0ecd6c67eb
14 changed files with 52 additions and 52 deletions

View File

@@ -1,4 +1,4 @@
# MysteryApp-Cursor - Recruiter Workflow SAAS
# MerchantsOfHope-SupplyANdDemandPortal - Recruiter Workflow SAAS
A comprehensive SAAS application for managing recruiter workflows, built with modern technologies and following TDD principles.
@@ -52,7 +52,7 @@ A comprehensive SAAS application for managing recruiter workflows, built with mo
1. **Clone the repository**
```bash
git clone <repository-url>
cd MysteryApp-Cursor
cd MerchantsOfHope-SupplyANdDemandPortal
```
2. **Start the application**
@@ -63,10 +63,10 @@ A comprehensive SAAS application for managing recruiter workflows, built with mo
3. **Initialize the database**
```bash
# Run database migrations
docker-compose exec MysteryApp-Cursor-backend npm run migrate
docker-compose exec merchantsofhope-supplyanddemandportal-backend npm run migrate
# Seed the database with sample data
docker-compose exec MysteryApp-Cursor-backend npm run seed
docker-compose exec merchantsofhope-supplyanddemandportal-backend npm run seed
```
4. **Access the application**
@@ -78,8 +78,8 @@ A comprehensive SAAS application for managing recruiter workflows, built with mo
The application comes with pre-seeded demo accounts:
- **Admin**: admin@mysteryapp.com / admin123
- **Recruiter**: recruiter@mysteryapp.com / recruiter123
- **Admin**: admin@merchantsofhope.org / admin123
- **Recruiter**: recruiter@merchantsofhope.org / recruiter123
- **Employer**: employer@techcorp.com / employer123
- **Candidate**: candidate@example.com / candidate123
@@ -128,23 +128,23 @@ The application comes with pre-seeded demo accounts:
### Backend Tests
```bash
# Run all tests
docker-compose exec MysteryApp-Cursor-backend npm test
docker-compose exec merchantsofhope-supplyanddemandportal-backend npm test
# Run tests in watch mode
docker-compose exec MysteryApp-Cursor-backend npm run test:watch
docker-compose exec merchantsofhope-supplyanddemandportal-backend npm run test:watch
```
### Frontend Tests
```bash
# Run frontend tests
docker-compose exec MysteryApp-Cursor-frontend npm test
docker-compose exec merchantsofhope-supplyanddemandportal-frontend npm test
```
## Development
### Project Structure
```
MysteryApp-Cursor/
MerchantsOfHope-SupplyANdDemandPortal/
├── backend/
│ ├── src/
│ │ ├── routes/ # API route handlers

View File

@@ -12,6 +12,6 @@ Ignore anything that isn't core to the app (no CI/CD , no worrying about anythin
Use docker and docker compose
Prefix all docker artifacts with MysteryApp-Cursor-
Prefix all docker artifacts with MerchantsOfHope-SupplyANdDemandPortal-
Lets go!
Lets go!

View File

@@ -1,7 +1,7 @@
{
"name": "mysteryapp-cursor-backend",
"name": "merchantsofhope-supplyanddemandportal-backend",
"version": "1.0.0",
"description": "Backend for MysteryApp-Cursor recruiter workflow SAAS",
"description": "Backend for MerchantsOfHope-SupplyANdDemandPortal recruiter workflow SAAS",
"main": "src/server.js",
"scripts": {
"start": "node src/server.js",
@@ -31,6 +31,6 @@
"@types/jest": "^29.5.8"
},
"keywords": ["recruiter", "saas", "workflow", "hiring"],
"author": "MysteryApp-Cursor",
"author": "MerchantsOfHope-SupplyANdDemandPortal",
"license": "MIT"
}

View File

@@ -8,7 +8,7 @@ const pool = new Pool({
// Test database connection
pool.on('connect', () => {
console.log('Connected to MysteryApp-Cursor database');
console.log('Connected to MerchantsOfHope-SupplyANdDemandPortal database');
});
pool.on('error', (err) => {

View File

@@ -1,4 +1,4 @@
-- MysteryApp-Cursor Database Schema
-- MerchantsOfHope-SupplyANdDemandPortal Database Schema
-- Users table (for authentication and user management)
CREATE TABLE IF NOT EXISTS users (

View File

@@ -14,14 +14,14 @@ async function seed() {
// Insert users
const users = [
{
email: 'admin@mysteryapp.com',
email: 'admin@merchantsofhope.org',
password_hash: adminPassword,
first_name: 'Admin',
last_name: 'User',
role: 'admin'
},
{
email: 'recruiter@mysteryapp.com',
email: 'recruiter@merchantsofhope.org',
password_hash: recruiterPassword,
first_name: 'John',
last_name: 'Recruiter',
@@ -108,8 +108,8 @@ async function seed() {
console.log('Database seeding completed successfully!');
console.log('Sample users created:');
console.log('- Admin: admin@mysteryapp.com / admin123');
console.log('- Recruiter: recruiter@mysteryapp.com / recruiter123');
console.log('- Admin: admin@merchantsofhope.org / admin123');
console.log('- Recruiter: recruiter@merchantsofhope.org / recruiter123');
console.log('- Employer: employer@techcorp.com / employer123');
console.log('- Candidate: candidate@example.com / candidate123');

View File

@@ -51,7 +51,7 @@ app.use('*', (req, res) => {
});
app.listen(PORT, () => {
console.log(`MysteryApp-Cursor backend server running on port ${PORT}`);
console.log(`MerchantsOfHope-SupplyANdDemandPortal backend server running on port ${PORT}`);
});
module.exports = app;

View File

@@ -1,58 +1,58 @@
services:
mysteryapp-cursor-database:
merchantsofhope-supplyanddemandportal-database:
image: postgres:15-alpine
container_name: mysteryapp-cursor-database
container_name: merchantsofhope-supplyanddemandportal-database
environment:
POSTGRES_DB: mysteryapp_cursor
POSTGRES_USER: mysteryapp_user
POSTGRES_PASSWORD: mysteryapp_password
POSTGRES_DB: merchantsofhope_supplyanddemandportal
POSTGRES_USER: merchantsofhope_user
POSTGRES_PASSWORD: merchantsofhope_password
ports:
- "0.0.0.0:5432:5432"
volumes:
- mysteryapp-cursor-postgres-data:/var/lib/postgresql/data
- merchantsofhope-supplyanddemandportal-postgres-data:/var/lib/postgresql/data
networks:
- mysteryapp-cursor-network
- merchantsofhope-supplyanddemandportal-network
mysteryapp-cursor-backend:
merchantsofhope-supplyanddemandportal-backend:
build:
context: ./backend
dockerfile: Dockerfile
container_name: mysteryapp-cursor-backend
container_name: merchantsofhope-supplyanddemandportal-backend
environment:
NODE_ENV: development
DATABASE_URL: postgresql://mysteryapp_user:mysteryapp_password@mysteryapp-cursor-database:5432/mysteryapp_cursor
JWT_SECRET: mysteryapp_jwt_secret_key_2024
DATABASE_URL: postgresql://merchantsofhope_user:merchantsofhope_password@merchantsofhope-supplyanddemandportal-database:5432/merchantsofhope_supplyanddemandportal
JWT_SECRET: merchantsofhope_jwt_secret_key_2024
PORT: 3001
ports:
- "0.0.0.0:3001:3001"
depends_on:
- mysteryapp-cursor-database
- merchantsofhope-supplyanddemandportal-database
volumes:
- ./backend:/app
- /app/node_modules
networks:
- mysteryapp-cursor-network
- merchantsofhope-supplyanddemandportal-network
mysteryapp-cursor-frontend:
merchantsofhope-supplyanddemandportal-frontend:
build:
context: ./frontend
dockerfile: Dockerfile
container_name: mysteryapp-cursor-frontend
container_name: merchantsofhope-supplyanddemandportal-frontend
environment:
REACT_APP_API_URL: http://localhost:3001
ports:
- "0.0.0.0:12000:3000"
depends_on:
- mysteryapp-cursor-backend
- merchantsofhope-supplyanddemandportal-backend
volumes:
- ./frontend:/app
- /app/node_modules
networks:
- mysteryapp-cursor-network
- merchantsofhope-supplyanddemandportal-network
volumes:
mysteryapp-cursor-postgres-data:
merchantsofhope-supplyanddemandportal-postgres-data:
networks:
mysteryapp-cursor-network:
merchantsofhope-supplyanddemandportal-network:
driver: bridge

View File

@@ -1,7 +1,7 @@
{
"name": "mysteryapp-cursor-frontend",
"name": "merchantsofhope-supplyanddemandportal-frontend",
"version": "1.0.0",
"description": "Frontend for MysteryApp-Cursor recruiter workflow SAAS",
"description": "Frontend for MerchantsOfHope-SupplyANdDemandPortal recruiter workflow SAAS",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^5.17.0",
@@ -49,5 +49,5 @@
"@types/react": "^18.2.42",
"@types/react-dom": "^18.2.17"
},
"proxy": "http://MysteryApp-Cursor-backend:3001"
"proxy": "http://merchantsofhope-supplyanddemandportal-backend:3001"
}

View File

@@ -7,11 +7,11 @@
<meta name="theme-color" content="#000000" />
<meta
name="description"
content="MysteryApp-Cursor - Professional Recruiter Workflow SAAS"
content="MerchantsOfHope-SupplyANdDemandPortal - Professional Recruiter Workflow SAAS"
/>
<link rel="apple-touch-icon" href="%PUBLIC_URL%/logo192.png" />
<link rel="manifest" href="%PUBLIC_URL%/manifest.json" />
<title>MysteryApp-Cursor</title>
<title>MerchantsOfHope-SupplyANdDemandPortal</title>
</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>

View File

@@ -53,7 +53,7 @@ const Layout = () => {
</div>
<div className="flex-1 h-0 pt-5 pb-4 overflow-y-auto">
<div className="flex-shrink-0 flex items-center px-4">
<h1 className="text-xl font-bold text-gray-900">MysteryApp-Cursor</h1>
<h1 className="text-xl font-bold text-gray-900">MerchantsOfHope-SupplyANdDemandPortal</h1>
</div>
<nav className="mt-5 px-2 space-y-1">
{filteredNavigation.map((item) => {
@@ -83,7 +83,7 @@ const Layout = () => {
<div className="flex-1 flex flex-col min-h-0 border-r border-gray-200 bg-white">
<div className="flex-1 flex flex-col pt-5 pb-4 overflow-y-auto">
<div className="flex items-center flex-shrink-0 px-4">
<h1 className="text-xl font-bold text-gray-900">MysteryApp-Cursor</h1>
<h1 className="text-xl font-bold text-gray-900">MerchantsOfHope-SupplyANdDemandPortal</h1>
</div>
<nav className="mt-5 flex-1 px-2 space-y-1">
{filteredNavigation.map((item) => {

View File

@@ -39,7 +39,7 @@ describe('Layout', () => {
it('renders the layout with user information', () => {
renderWithRouter(<Layout />);
expect(screen.getByText('MysteryApp-Cursor')).toBeInTheDocument();
expect(screen.getByText('MerchantsOfHope-SupplyANdDemandPortal')).toBeInTheDocument();
expect(screen.getByText('John Doe')).toBeInTheDocument();
expect(screen.getByText('candidate')).toBeInTheDocument();
});

View File

@@ -95,7 +95,7 @@ const Dashboard = () => {
{getGreeting()}, {user?.firstName}!
</h1>
<p className="mt-1 text-sm text-gray-500">
Welcome to your MysteryApp-Cursor dashboard
Welcome to your MerchantsOfHope-SupplyANdDemandPortal dashboard
</p>
<div className="text-xs text-gray-500 mt-2">
Debug: User role = {user?.role || 'undefined'}, User ID = {user?.id || 'undefined'}

View File

@@ -121,8 +121,8 @@ const Login = () => {
Demo accounts:
</p>
<div className="mt-2 text-xs text-gray-500 space-y-1">
<p>Admin: admin@mysteryapp.com / admin123</p>
<p>Recruiter: recruiter@mysteryapp.com / recruiter123</p>
<p>Admin: admin@merchantsofhope.org / admin123</p>
<p>Recruiter: recruiter@merchantsofhope.org / recruiter123</p>
<p>Employer: employer@techcorp.com / employer123</p>
<p>Candidate: candidate@example.com / candidate123</p>
</div>