Test_Genius_Code
Test_Genius_Code
// server.js
// Middleware
app.use(express.json());
app.use(cors());
mongoose.connect('mongodb://localhost/test_genius', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
// Routes
app.use('/api/users', require('./routes/userRoutes'));
app.use('/api/tests', require('./routes/testRoutes'));
app.use('/api/leaderboard', require('./routes/leaderboardRoutes'));
username: String,
password: String,
badges: [String],
});
// models/Test.js
title: String,
});
// models/Leaderboard.js
testId: String,
});
const user = new User({ username, password, badges: [], scores: [] });
await user.save();
res.send('User registered!');
});
});
module.exports = router;
// routes/testRoutes.js
res.json(tests);
});
module.exports = router;
// routes/leaderboardRoutes.js
else user.badges.push('Bronze');
await user.save();
let leaderboard = await Leaderboard.findOne({ testId });
if (!leaderboard) {
await leaderboard.save();
res.send('Score submitted!');
});
module.exports = router;
// App.js
import './App.css';
useEffect(() => {
axios.get('http://localhost:5000/api/tests').then((response) => {
setTests(response.data);
});
}, []);
};
return (
<div className="App">
<h1>Test Genius</h1>
{!user ? (
):(
)}
</div>
);
};
// components/Login.js
import React, { useState } from 'react';
e.preventDefault();
onLogin(username, password);
};
return (
<form onSubmit={handleSubmit}>
/>
<button type="submit">Login</button>
</form>
);
};
// components/Dashboard.js
<div>
<h2>Welcome, {user.username}</h2>
<h3>Your Tests</h3>
<ul>
{tests.map((test) => (
<li key={test._id}>{test.title}</li>
))}
</ul>
</div>
);
// App.css
body {
margin: 0;
padding: 0;
background-color: #f4f4f4;
.App {
text-align: center;
padding: 20px;
}
form {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
button {
background-color: #007bff;
color: white;
border: none;
cursor: pointer;
button:hover {
background-color: #0056b3;