Restaurant and reservation algorithm utilities
npm install @happychef/algorithmRestaurant and reservation algorithm utilities for Happy Chef.



``bash`
npm install @happychef/algorithm
- Date & Time Availability: Check if specific dates and times are available for reservations
- Timeblock Management: Get available timeblocks based on restaurant settings
- Table Assignment: Automatically assign tables to reservations
- Smart Filtering: Filter timeblocks based on max arrivals, max groups, and other constraints
- Exception Handling: Support for restaurant opening hours exceptions and closures
- Comprehensive Testing: 70+ unit tests ensuring reliability
`javascript
const {
isDateAvailable,
isTimeAvailable,
getAvailableTimeblocks,
assignTablesIfPossible
} = require('@happychef/algorithm');
// Check if a date is available
const available = isDateAvailable(
restaurantData,
'2025-06-15',
reservations,
guests
);
// Get available timeblocks
const timeblocks = getAvailableTimeblocks(
restaurantData,
'2025-06-15',
reservations,
guests
);
// Check if specific time is available
const timeAvailable = isTimeAvailable(
restaurantData,
'2025-06-15',
'12:00',
reservations,
guests
);
`
`bashRun all tests
npm test
$3
The package includes comprehensive unit tests covering:
- Helper functions (parseTime, getMealTypeByTime, etc.)
- Date and time availability checks
- Timeblock filtering
- Restaurant data and exceptions handling
- Table assignment logic
- Filter functions (max arrivals, max groups)
All tests are automatically run on every push to the main branch via GitHub Actions.
CI/CD Pipeline
This package uses GitHub Actions for continuous integration and deployment:
1. Automated Testing: Tests run on Node.js 18.x and 20.x
2. Coverage Reports: Automatically uploaded to Codecov
3. Automatic Publishing: When tests pass on main branch and version changes, package is automatically published to npm
4. Git Tagging: Successful releases are automatically tagged
$3
To enable automatic publishing:
1. Create an NPM Token:
- Go to npmjs.com
- Navigate to Access Tokens
- Generate a new "Automation" token
- Copy the token
2. Add NPM Token to GitHub Secrets:
- Go to your GitHub repository
- Navigate to Settings > Secrets and variables > Actions
- Click "New repository secret"
- Name:
NPM_TOKEN
- Value: Paste your NPM token
- Click "Add secret"3. Optional: Add Codecov Token (for coverage reports):
- Go to codecov.io
- Add your repository
- Copy the token
- Add as
CODECOV_TOKEN secret in GitHub4. Publish New Version:
- Update version in
package.json
- Commit and push to main branch
- GitHub Actions will automatically:
- Run all tests
- Publish to npm if tests pass
- Create a git tag for the releaseContributing
1. Fork the repository
2. Create your feature branch (
git checkout -b feature/amazing-feature)
3. Write tests for your changes
4. Ensure all tests pass (npm test)
5. Commit your changes (git commit -m 'Add some amazing feature')
6. Push to the branch (git push origin feature/amazing-feature`)MIT
Happy Chef