P.S. It's easy

 



Storytime 

Back in April, when Compres got postponed, Jonny and I were looking for something to pass time, and in the past, we had planned to work together however something always came up and it didn't pan out.


So, at last, we decided to plan something to build, something that could be used by a wide audience. We decided to sort out the metadata generated by the Practice School Allotment and convert it into an easily interpreted form, thus making the  PS allotment process a little less tiring. 


Thus leading us to build P.S. It's Easy.



What is it?

PS1 Responses/PS 2 responses

It's a web application, which allows you to see CGPA distributions of companies that have been coming to the PS program from 2017 onwards, in an easy to read Boxplot or candlestick graph format. We have provided a CGPA range filter, a company-wise filter as well as a year-wise filter as seen below.

You can infer very easily the CGPA range of companies and even get a button to read their chronicles.



PS 2 Chronicles


In addition, we have another feature where you can browse chronicles of the past 4 years, allowing you to get a better idea of the kind of work that stations give. Here again, you can filter by company name as well as the year, and read first-hand accounts from your beloved seniors of their experiences.



Problem Bank  

Lastly, we also provide you with an option to check the current year's Project bank, apply filters on them and even download it as a CSV file, which is compatible with the chrome extension, PS Companion. So you can now reorder your CSV and upload it on PS portal without a hassle.

This years project bank is now available!



How to use it?

Everyone needs to sign into it using BITS mail as it's not a good idea to keep this information out in the open, and it preserves the same level of security as the source of the data, ie. Post allotment Google forms and Chronicles which are circulated by PSD on BITS mail.

So check it out on  P.S. It's Easy,  and feel free to leave your feedback in the comments or ping us on Facebook 

Tech for Geeks ;)

The front end of this application is written in React.js.  And the backend was in Flask, and the database was MongoDB atlas.(you may wonder why it wasn't in Mern stack fully. Well I'm not a Mern fan XD but Jonny is, so trade-off, you can say)

Flask doesn't have a production server of itself, so instead, we use Gunicorn WSGI server(with an Nginx reverse proxy) running for 4 workers.

It's hosted on Oracle cloud (it's free, for some services) in an Alpine Linux instance and the application itself is running inside a  docker container.  


Where did we get the data and how did we clean it?

For the CGPA distribution, we used crowdsourced data which is gathered after every allotment cycle on PS Queries, and for the chronicles, the source was PSD's official chronicles 


Since all of this data was largely non-uniform, for example, the same firm went by slightly different names in every student's entry in the Gform responses as well as the Chronicles, hence making it a herculean task to clean it up manually. So we relied on Fuzzy matching libraries in JS and python, to aggregate similar station names together, as well as provide search results. 

However, even then it took us days to clean up just sem 1 responses for the last 4 years. Hence we present to you just SEM 1 data for now.


The Chronicles were scraped using Regex, PDF parsers and pro js logic ( in Jonny's own words).


How does the extension, PS Companion work?


So essentially on providing a CSV, it parses it row by row and rearranges the entire pref order table using a field that's unique to every row. In other words, it's dragging and dropping very fast. So it's  completely a client side service. 

What's next?


Further, we plan to make a microservice that auto-updates the current allotment Cycle's project bank after a certain time interval( maybe 1 hour or so), so people can get the latest problem banks and station list as we know ps* has a history of adding stations randomly during the allotment filling stage.


Maintenance


In order to keep the data up to date on the site, we do need to feed in data twice a year after every allotment cycle, which may be a day's task every time. 

Thus we are open to contributors.



How to contribute?


If you have read until now,  and are interested to contribute with your ideas, nothing will make us happier, we would love to have you, regardless of your skillset. Ping us on Facebook. 




Yours Truly,

Tanya Prasad and Jonathan Samuel 


Comments

Post a Comment

Popular posts from this blog

Internship drive season

Decathlon delivery charge scam