- Take starter code from the branch
starter-code
- npm install and npm run dev
- Showcase all pages and UI elements
- Create form action for /register
- Read form data
- Create /server folder
- Create register.ts file
- Create register_user function
- Verify name, email, password (check later if email is taken)
- Create utils.ts
- Create account on https://www.mongodb.com/atlas
- Create new cluster
- Create admin user
- Copy connection string
- Setup environment variables
- Install mongoose
- Create db.ts
- Create connect_to_db function
- Create +layout.server.ts
- Create layout server load function
- Create models.ts
- Create User_Schema
- Create User_Model
- Create user in register_user function
- Check if email is already taken
- Complete form action for /register
- Show error or success on register page
- Refill form inputs except for password
- Progressively enhance all forms
- Install bcrypt and @types/bcrypt (-D)
- Hash password before saving to database
- Create form action for /logout
- Read form data
- Create login.ts
- Create get_user function
- Find the user via email and return it
- Create login_user function
- Install jsonwebtoken and @types/jsonwebtoken (-D)
- Create JWT secret environment variable
- Create JWT from user id and return it
- Complete form action for /logout
- Set cookies for auth-token, email, name
- Show error or message on login page
- Create authenticate.ts
- Create authenticate function
- Create global auth type
- Create hooks.server.ts
- Create handle function
- Create empty server file for /dashboard
- Return name and email from layout server load
- Pass logged_in prop to Nav component in layout
- Update Nav component
- Create logout folder
- Create page.server.ts
- Create form action for logout
- Change actions for change name and email forms
- Create page.server.ts file for /account
- Create actions for name and email
- Create account.ts
- Create change_name and change_email functions