Kryptos is a cryptic hunt platform built on Node.js, Express, and MongoDB. It challenges users with puzzles while offering an integrated admin interface for creating questions.
- Cryptic Hunt Game: Solve puzzles and compete in a dynamic wargame environment.
- Question Creation: Use the
/logincrypt
endpoint to access the admin interface for creating questions. The admin password is preset to "admin". - Automatic Database Setup: The necessary MongoDB collections (for example,
models.Team
,models.Log
,models.Questions
, andmodels.QuestionsGamble
) are automatically generated when you run the app. - Secure Authentication: Both user and admin endpoints include security features like rate limiting and JWT-based authentication.
- Node.js v14+ (tested with Node.js v22.12.0)
- A MongoDB Atlas instance; update your connection URI in
.env
-
Clone the Repository
git clone https://github.com/Ved235/Kryptos.git
-
Install Dependencies
npm install
-
Configure Environment Variables Create a .env file in the project root with the following example configuration:
MONGO_URI="" PASS="admin" ADMIN="admin" nJWT="secret" JWT="secret"
Replace
MONGO_URI
with your actual MongoDB Atlas URI.
Start the app using:
npm start
Then, visit http://localhost:5000 in your browser.
/register
&/login
– Endpoints for registration and user login./dashboard
– User dashboard after successful authentication./shop
– Interface for purchasing power-ups./logincrypt
– Admin Interface: This special endpoint is used for creating questions. Use the password "admin" (see routes/auth.js) when authenticating as an admin.
MongoDB collections will be automatically created when the app runs. Ensure your .env file contains a valid MongoDB Atlas connection string.
.
├── controllers/
│ ├── answer.js
│ ├── answerGamble.js
│ ├── attack.js
│ ├── buy.js
│ ├── defense.js
│ └── questionMaker.js
├── middleware/
│ ├── ncryptVerification.js
│ ├── teamValidate.js
│ └── tokenVerification.js
├── models/
│ ├── Log.js
│ ├── Questions.js
│ ├── QuestionsGamble.js
│ └── Team.js
├── routes/
├── views/
├── public/
├── index.js
├── .env
└── package.json