This personal project was undertaken to enhance my proficiency in various technologies and tools commonly employed in web application development. While I had prior experience with many of these components, several were either new to me or had only been explored through tutorials or basic courses. To deepen my understanding and practical skills, I aimed to construct a moderately sized web application from the ground up.
The objective of this project was to integrate all relevant technologies and tools, from configuring the hosting provider and domain to implementing specific web application features. Through this hands-on experience, I sought to expand my capabilities as a full-stack developer.
This web application facilitates the following functions:
- Recruiters can advertise job postings and search for candidates
- Candidates can generate and download their resumes, as well as postulate to job postings
- Admin users can oversee the application’s various operational aspects
- Render for hosting
- PostgreSQL as database
- Redis for in-memory storage
- Amazon S3 for storing images, such as profile pictures
- Stripe integration for allowing candidates to subscribe for unlimited job applications
- Sendgrid as an SMTP provider
- Forwardemail for forwarding emails to my personal account. Also, configured my personal account to send emails as [email protected]
- Twilio for sending SMS notifications
- Ruby on Rails as framework
- Sidekiq for handling background jobs, such as sending SMS to candidates when their job applications are approved
- Sidekiq-Scheduler for scheduled tasks, such as sending reminder emails
- Devise for authentication
- Devise Masquerade for admins to impersonate candidates and recruiters
- Omniauth for social login with Gmail, Twitter, and GitHub for candidates and recruiters
- Pundit for authorization
- React for the frontend. Although, erb is used in some cases, such as Devise's views
- Bootstrap as CSS framework
- Redux for managing state in certain features. Even though it was not strictly necessary for such features, I thought it appropriate to add it
- React-Router for managing navigation and UI updates within sections
- Honeybadger for monitoring errors
- Internationalization for English and Spanish
- Custom error pages
- Github Actions for rubocop, erb linter and GitGuardian