Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/schneedotdev/find-a-dev
Find developers who are willing to offer time to tutor! Filter through a list of devs by technology.
https://github.com/schneedotdev/find-a-dev
ejs express javascript mongodb nodejs tutoring
Last synced: about 2 hours ago
JSON representation
Find developers who are willing to offer time to tutor! Filter through a list of devs by technology.
- Host: GitHub
- URL: https://github.com/schneedotdev/find-a-dev
- Owner: schneedotdev
- Created: 2022-08-04T01:13:25.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2022-10-19T15:24:26.000Z (about 2 years ago)
- Last Synced: 2023-07-24T20:53:24.258Z (over 1 year ago)
- Topics: ejs, express, javascript, mongodb, nodejs, tutoring
- Language: EJS
- Homepage: https://find-a-dev.up.railway.app/
- Size: 1.97 MB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Find a Dev
Find developers who can assist your learning process in certain technologies!
Explore the docs »
View Demo
·
Report Bug
·
Request Feature
Table of Contents
## About The Project
Find developers who are willing to support your learning journey in software! You can cater your search by popular web technology. For users who are interested in offering their help, please click the "Offer Help" button and subimit your information to get posted on the help board!### Built with
- MongoDB
- Express.js
- Node
- EJS
- JavaScript
- CSS## Getting Started
### Installation
_In order to clone a local copy of this repository, please follow the steps below._
1. Navigate to the folder you would like to store the project
2. Clone the repo
```sh
git clone https://github.com/brianschnee/find-a-dev.git
```
3. Switch into the directory that was just created
```sh
cd find-a-dev
```
4. Install NPM packages
```sh
npm install
```
5. Create a .env file at the base of your directory called `.env`
6. Enter your MongoURI string in `.env` with the key `DB_STRING`
```sh
DB_STRING=""
```## Usage
In order to use this application. Navigate to the find-a-dev website and search through a list of developers who are willing to support your journey in tech. You may filter through developers by popular technologies such as "Node.js" or "MongoDB." To sign up and offer help to our community, please click the `Offer Help` button and submit your information for other devs to see. Your information will be stored in our Mongo DB and rendered for users to see.
## Roadmap
- [ ] Convert to Mongoose
- [ ] Convert to MVC Architecture
- [ ] Add Authentication to confirm user social media accounts using Passport.js or Auth0
- [ ] Add mobile compatibility by created responsive queries
- [ ] Add Pagination to reduce render size when user base grows
- [ ] Add user direct messaging using Socket.ioSee the [open issues](https://github.com/brianschnee/find-a-dev/issues) for a full list of proposed features (and known issues).
## Lessons Learned
- How to create UI components that send requests to my express server, which will filter through a collection of developers stored in a mongo database and then render the results back to the client.
- When prompting for a user's twitter profile, I encountered the dangers of allowing links to be hidden behind icons in my UI. To protect against malicious intent, I now prompt for a users twitter profile name (rather than the full URL) which will be appended to a twitter url. This makes it so that malicious links provided by users will result in a 404 error from twitter, because the route is set to detect user profile names.
- Allowing users to submit their own profile pictures comes at the cost of potentially allowing innapropriate content. For this project, I had been able to pull profile images from github without having to access the platforms api/requiring OAuth. I do so by appending ".png" to a github profile link, which then redirects to a source file I am able to render. During later iterations of this app, I will implement OAuth in order to provide a more accurate/secure user experience.## Contact
Twitter - [@BrianSchneeDev](https://twitter.com/brianschneedev)
Email - [Contact Me](https://www.brianschnee.com/#contact)
Project Link: [https://github.com/brianschnee/find-a-dev](https://github.com/brianschnee/find-a-dev)