Noded Js expenseTrackerApi
Noded Js expenseTrackerApi
js,
Express, MongoDB, and JWT for your Expense Tracker application. It includes:
User Signup
User Login
User Logout (client side)
Token-based protection
Password hashing using bcrypt
expense-tracker-api/
│
├── controllers/
│ └── authController.js
├── models/
│ └── User.js
├── routes/
│ └── authRoutes.js
├── middleware/
│ └── authMiddleware.js
├── .env
├── server.js
└── package.json
1. package.json dependencies
npm init -y
npm install express mongoose bcryptjs jsonwebtoken dotenv cors
PORT=5000
MONGO_URI=mongodb://127.0.0.1:27017/ExpenseTracker
JWT_SECRET=yourSuperSecretKey
3. models/User.js
4. controllers/authController.js
const User = require("../models/User");
const bcrypt = require("bcryptjs");
const jwt = require("jsonwebtoken");
5. routes/authRoutes.js
router.post("/signup", signup);
router.post("/login", login);
module.exports = router;
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = decoded;
next();
} catch (err) {
res.status(401).json({ message: "Token invalid or expired" });
}
};
module.exports = verifyToken;
7. server.js
dotenv.config();
const app = express();
app.use(cors());
app.use(express.json());
app.use("/api/auth", authRoutes);
mongoose.connect(process.env.MONGO_URI)
.then(() => {
app.listen(process.env.PORT, () =>
console.log(`Server started on http://localhost:${process.env.PORT}`)
);
})
.catch(err => console.error("MongoDB connection error:", err));
Example Routes:
POST /api/auth/signup
{
"username": "suchit",
"email": "[email protected]",
"password": "secure123"
}
POST /api/auth/login
{
"email": "[email protected]",
"password": "secure123"
}
Let me know if you want to move forward with those or if you need help integrating
this with your React frontend!