Code Monkey home page Code Monkey logo

uniqna's Introduction

This is the primary codebase that powered the online community uniqna.com. The codebase's engine is built upon the Django Framework.


A TL;DR of our current live stack:

  1. Engine - Python v3.5 | Django v2
  2. Database - PostgreSQL
  3. Frontend - Bulma, Vue and few other magic
  4. Cloud - Ubuntu 18.04 and nginx

About

The initial commits of uniqna began as a test project on which I (Jeremy) would tinker around with Django and experiment with its MVC Architecture. In fact, the very idea of building an online forum didn't cross my mind then.

After developing the authentication system, I started working on a tiny Q&A module where users could post questions and contribute to answers. Furthermore, the front page was developed to list all the questions and sort them according to their popularity. It was fun learning how to connect the dots between the database, the templates and the python engine.

When the website was quite stable and worked seamlessly (just kidding), I was struck by an epiphany that this could actually be used by real users. I met along with my fellow good developer friend Sriram and discussed about the type of users who would want to use this platform and how we could work as a team for further development of the codebase.

So we put on our magical hats and, fast forward through all the slack discussions, all nighters, merge conflicts and intensive coding sessions, together we developed a working online platform called uniqna.

Contribution Guidelines

This project has now stopped active development, however, you can clone the repo, mess around, and have fun!

If you're new to contributing to Open Source on Github, this guide can help you get started. Contributing to Open Source can seem very indimidating at first, but I promise it'll be fun 🌈

License

BSD 3-Clause License

uniqna's People

Contributors

dependabot[bot] avatar digi0ps avatar jeremyphilemon avatar pyup-bot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

uniqna's Issues

Product tour in place.

Label: Enhancement.

Context: User onboarding -> feature set. You already have the UI structure in place just need to implement context + focus.

If you want to Google for context -> search for product joyride.

More Javascript in the Registration page.

We need more javascript in the registration page for these functions:

  • Check for username availability
  • Check whether email is valid as per university
  • Show "schools" belonging to the university only after the university has been selected.

Post and Replies need context

Context Usecase:

Suppose I have answered a question. Now I don't want to scroll and find the question -> I can quickly go to my profile and see my replies -> which I can right now but:

  • I can't see the question so I lose context of what was I even replying to.
  • I can't quick jump to the thread where I have this reply in place. (Something like what FB does when you see your friend commented on a post and then you click on it so FB scrolls automatically to the friend's comment)
  • I can't share my answer with somebody -> shareable links is the easiest way to have word of mouth marketing.

Imagine if I am sharing links like:

question
Answer by xyz name

^ xyz name if popular is click bait.

There is a visual glitch when the notification exceeds.

When the notifications exceed 10ish, two scroll bars appear on the outer layout's parent div. This visual glitch deteriorates the ergonomics and the aesthetics when one wishes to view the notifications.

We could probably remove the dropdown and make a separate view+template to view the notifications. This way, there is less clutter in one screen and also infinite scrolling could be implemented to support viewing of older notifications. So when the user receives a notification, the notification glyph's badge could show the count while clicking on it opens the notification view.

What do you say? @digi0ps

Use django-cors-headers.

Using django-cors-headers for cross origin resource sharing helps us delete a lot of duplicate code in JS which is written to enable cors.

Add dependency files to repo to enable offline developing.

Right now, all the dependencies are being served from CDNs. This prevents us from developing when offline. So it would be better to have the file served from our servers itself.

Major dependencies:

  • jQuery

  • Material.css

  • Material

  • Scroll Reveal.js

Cleaning the repository

Was wondering if we could clean this repository up (especially those stale branches and pull requests) and make a tiny documentation? Thoughts?

emails: Send emails asynchronously.

Right now the Forgot password email is being sent spontaneously. This doesn't allow the user to do anything else until the email is sent. So sending emails asynchronously using a distributed task queue like Celery.

Clicking on username should lead to my profile.

The general UX you have followed is that by clicking on any person's username is to lead to a person's profile. So the user thinks by clicking his/her name in the center of the top navigation bar, it should lead to his/her profile. You could skip the profile button because it's intuitive.

Initial Update

Hi πŸ‘Š

This is my first visit to this fine repo, but it seems you have been working hard to keep all dependencies updated so far.

Once you have closed this issue, I'll create separate pull requests for every update as soon as I find one.

That's it for now!

Happy merging! πŸ€–

Voting not working for posts which are paginated.

The voting doesn't work for elements which get inserted after we click "Load More". I guess this is because the event handler for the voting function doesn't get attached to them as they are loaded after the script is executed. So we may have to attach the handlers once again after each element is loaded. I will work on a fix for this soon!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.