Implement user authentication from scratch for gSchool assignment