Stack Overflow lite
Stack Overflow lite is a WebApp I designed and developed as part of THE Jitu Cohort 9 Software Development Training program(Full-Stack Web). It allows users to post questions and answers on various tags/topics. Users can upvote/downvote, comment on questions and answers. The application also has an admin dashboard for managing users, questions and answers.
Tech Stack
Frontend
Responsive UI design with:
- Figma - UI design and prototyping
- Angular 15 - frontend framework
- NgRx - state management
- Angular Material - UI components
- ng2-charts - charts
- Stacks Editor - rich text editor
Backend
RESTful API with:
- TypeScript - programming language
- Node.js - runtime environment
- Express.js - web framework
- Nodemailer - sending emails
- EJS - for email templates
- Node Cron - background services
- MSSQL(Stored Procedures & Queries only, no ORM)
- JWT - authentication and authorization
- Bcrypt - password hashing
- Dotenv - environment variables
- Winston & Morgan - logging
- Joi - dtos validation and sanitization
- Postman - API testing and documentation
Features
- Question and answer posting with rich text editor (Stacks Editor)
- Search and filter questions/answers by tags/content
- Upvote and downvote questions and answers
- Commenting on questions and answers
- Real-time UI updates with NgRx
- User authentication and authorization with JWT
- User dashboard for managing user profile, questions and answers
- Password recovery with JWT and Nodemailer
- Emails with Nodemailer and EJS for:
- Notifications new users, questions and answers
- Password recovery.
- Background services with Node Cron for:
- Sending scheduled emails and tasks
- Admin dashboard for managing user accounts, questions, and answers
- Soft deletes for users, questions and answers
Installation
Prerequisites
- Node.js
- NPM
- Angular CLI v15
- MSSQL Server 2022
Frontend
- Clone the repository.
- Run
npm install
to install the dependencies. - Start the development server with
ng serve -o
. - If the browser does not open automatically, navigate to http://localhost:4200.
Backend
- Clone the repository.
- Run
npm install
to install the dependencies. - Create a database in MSSQL and update the database configuration in .env.
- Run the sql scripts in the database folder to create the db, necessary tables and stored procedures.
- Start the server with
npm run start:dev
. - Send API requests to http://localhost:5500. Find included Postman collection in the root folder.
Screenshots
Contributing
Contributions to this project are welcome. For major changes, please open an issue first to discuss what you would like to change.
Acknowledgements
This project was inspired by Stack Overflow. Special thanks to the Stack Overflow team for creating such a useful resource for developers around the world.
Special thanks to THE Jitu for the opportunity to learn and grow as a developer and to our instructor during the program Mr. Jonathan Ndambuki for his guidance and support throughout the program. ππΎ
Shoutout to my fellow trainees for the collaborations, encouragement, friendship and memories we made together. π€
Was an awesome experience and I'm glad to have been part of Cohort 9. π₯³
We did it! πππ