Do you want to learn a new skill but don't know where to start? Do you want to meet people near you who share your same interests? With Skill Market you can find people who share your interests, either they want to learn what you know and teach you what you want to learn, or they want to learn the same as you.
What it does
Skill Market matches you with other people. You can customise your profile, adding the skills you have, the skills you want to learn, and your location, and the app will match you with people near you who share your same interests or who can complement your skills.
How I built it
The app uses RediSearch to store the users, and specific queries to match them according to their interests and location by making use of the TAG and GEO features. The frontend uses VueJS and Tailwind CSS, and the backend is a NodeJS application with a REST API built using Express.
Challenges I ran into
Employing RediSearch for this use case required us to transform the data and build queries, and add a few features to the existing NodeJS client in a fork repo, which could eventually be pull requested to the original one after refactoring the changes so they are compatible with the more general use case.
Accomplishments that I'm proud of
This was our first time using Redis and building a web application from scratch, so we are proud of having something functional with just a few days of work. There are a lot of things to improve and add, but this is a proof of concept of an idea we had for some time, and using RediSearch to implement simplified the design a lot and was really fun to work with.
What I learned
- What is Redis, and a lot of useful applications it has besides caching.
- The existence of a lot of Redis modules. Even though we only used RediSearch, we experimented with RedisGraph and RedisJSON.
- The use of RediSearch to make complex queries involving location and tags in a simple way.
- Implementation of a web application from scratch using NodeJS for the backend and VueJS for the frontend.
What's next for Skill Market
- Make the app more usable:
- Improve the UX for registering, validating the email, logging in and out, creating a user profile and exploring other users profiles.
- Add new features:
- Add a matching score
- Match according to custom criteria, eg.: age, gender, ignore location, only take interests into account, etc.
- Add a chat in so users can keep their email private and communicate via the app
- Improve the code and infrastructure:
- Increase test coverage
- Containerise the app, improve the scalability of the design, and deploy to the cloud with elasticity for the backend and the database.