SOMPS

SOMPS

16 devlogs
32h 54m
•  Ship certified
Created by Alimad Co

Summer Of Making Project Search

Allows searching for projects inside the Hackclub Summer Of Making Program
Submission to Summer of Making and Reactive
# /backend
Contains the backend structure that is used to download and update the project list
# /frontend
Contains a frontend react+nextjs interface that allows the searching
# Uses:
The SOM API
React + NextJS
My Brain

Timeline

Added users api support and more more stats

Update attachment

Ship 2

1 payout of shell 153.0 shells

Alimad Co

29 days ago

Alimad Co Covers 5 devlogs and 6h 32m

Refetched the stats and broke a thing or two in the process

Update attachment

Updated all the data, working to add compatibility for the API changes in summer, but currently paused due to me being forbidden from the API 💀

Update attachment

Refetched the overall stats, and added a /api/leaderboard endpoint

Update attachment
Aly Aly about 1 month ago
this might be my favourite project in SoM, purely because of how well-made it is and because it’s something I’ve actually been actively using. I LOVE this.

Added a new votes chart and increased the length of users hour leaderboard

Update attachment

Just refetched the user count, and implemented the live.alimad.xyz API!
There has been a drop in hackclub slack users :(

Update attachment
Alimad Co Alimad Co about 1 month ago
Thanks!
Aly Aly about 1 month ago
I love this project, super useful and love using the website :)

Ship 1

1 payout of shell 154.0 shells

Alimad Co

about 1 month ago

Alimad Co Covers 10 devlogs and 21h 18m

Alright, so latest update, I added more graphs to the API and UI, and added a stats metadata feature.

Update attachment

Big fix: Update the search algorithm

Update attachment

Added more sorty by options

Update attachment

Improved smoll things, like sorting and mobile compatibility.
Improved the stats page too

Update attachment

Devlog:

[6/24/2025]

Starting with backend, we fetch the project list from the SOM API, we fetch the list of all

hackclub slack users, and we incorporate all users names into the project list

This will allow searching by author name

Creating getbanners.js, that uses the pages browse endpoint to fetch all project banners

-- Didnt sleep between here --

[6/25/2025]

Created index.js to get all users, get banner images, and merge them with projects.json, to create, the one, the legendary, FINALPROJECTS.JSON !!!!!!!!!!!!

End of Backend ig

Created frontend setup

Created frontend page, search page

At night:

Created the entire search algorithm (implemented from Alimad Surviellance)

The search engine basically has a goal to give the most relevant project.

This is done by assigning a score to each project, and then sorting by that score.

A project has many properties like name, author name, id, etc.

And it also has a bunch of low priority things like description, region, etc.

Alimad Search Engine merges all of them into an index, divides each index key by splitting with " ".

Then it splits the query with " ", and then filters all arrays for duplicates.

Next, a two dimensional loop compares each query word with each index word according to the following:
> If the query word is equal to the index word: add a score of 25

> If the query word is contained in the index word: add a score of 20

> If the levenshtein distance between the query word and the index word is less than 3: add a score of 10

> Repeat for low priority index with half the scores, but dont compare levenshtein distances

Then an approximate median is calculated by averaging the max and min value, adding them to the min value,

and then by filtering any projects below the mid value.

Then the projects are sorted using quick sort, and viola! We have our results.

This algorithm was designed by me three months ago.

[6/26/2025]

Did some finishes, added stats page, improved UI, and followed all the requirements for Reactive:
[x] Make at least three pages that link to each other (/, /search and /about)
[x] Make a nested route (/api/project/[id])
[x] Use at least 5 components (about-content, containter, loading, projectCard, searchContent, stats, dropdown)
[x] One of those components should accept children (container)
[x] One of those components should accept props (projectCard, stats)
[x] Have a nested component (/about has nested s)
[x] Create a component that fetches and displays data from an API (/about fetches from /api/stats)

And with that, I call this project finished, with just some things left to do:
[x] Create a sort by field

Open Source. Alimad Corporations. All rights reserved.

Made by Muhammad Ali

Update attachment

Finished YAYYYYYYYY
OMG Who is this guy with 14 projects

Update attachment

FInalized search UI, added functinality, will add filtering and sorting tomorrow

Update attachment

done some frontending

Update attachment

Downloaded list of banner image urls, downloaded hackclub slack users list, downloaded project json and merged all into
ONE BIG DADDY JSON to search from
and created an endpoint to get a single project details
Will do the entire frontend tomorrow :)

Update attachment

[6/24/2025]

Starting with backend, we fetch the project list from the SOM API, we fetch the list of all hackclub slack users, and we incorporate all users names into the project list
This will allow searching by author name
Creating getbanners.json, that uses the pages browse endpoint to fetch all project banners

Update attachment