const express = require('express'); const jwt = require('jsonwebtoken'); const bcrypt = require('bcryptjs'); const { check, validationResult } = require('express-validator'); const router = express.Router(); // User Model const User = require('./models/User'); // Register Route for Studio Owners router.post( '/register', [ check('email', 'Please include a valid email').isEmail(), check('password', 'Password is required').exists(), ], async (req, res) => { const errors = validationResult(req); if (!errors.isEmpty()) { return res.status(400).json({ errors: errors.array() }); } const { email, password, role } = req.body; try { let user = await User.findOne({ email }); if (user) { return res.status(400).json({ msg: 'User already exists' }); } user = new User({ email, password, role, // "Studio Owner", "Judge", etc. }); // Hash password before saving const salt = await bcrypt.genSalt(10); user.password = await bcrypt.hash(password, salt); await user.save(); // Generate JWT Token const payload = { user: { id: user.id, role: user.role, }, }; jwt.sign( payload, process.env.JWT_SECRET, { expiresIn: 3600 }, (err, token) => { if (err) throw err; res.json({ token }); } ); } catch (err) { console.error(err.message); res.status(500).send('Server error'); } } ); module.exports = router;
top of page

IMPROV CONTEST

At Dance Nation we love to showcase the talent that takes our stage, and our improv contest does just that! 

​

After each age division competes solos, duets, and trios, dancers have the option to enter our improv contest for only $5.  All dancers participating, as well as our panel of judges, will join each other on stage.  Music from a random genre will be played as all participants will improv together for at least 45 seconds!  Depending on the number of participants, each judge will choose 1-2 dancers to move on to an additional round of improv.  Subsequent rounds will follow until judges determine a champion.  Each improv champion will be awarded a banner as well as a $100 cash prize!

bottom of page