Code Monkey home page Code Monkey logo

the-domecode / domecode-opensource Goto Github PK

View Code? Open in Web Editor NEW
76.0 3.0 17.0 4.77 MB

DomeCode is an open-source application that helps you learn and practice code with the appropriate tools and a curated list of resources through the philosophy of practice.

Home Page: https://domecode.com

License: GNU Affero General Public License v3.0

Python 22.02% JavaScript 77.91% C 0.01% C++ 0.01% Go 0.01% Java 0.02% Rust 0.01% Procfile 0.01%
code python django tool website webapp platform webdevelopment development coding

domecode-opensource's Introduction

DomeCode DomeCode

Discord Server Subreddit subscribers

ARCHIVED

DomeCode has been archived for now due to no development activity on this project for quite a while. :/

Note

We need maintainers. Please get in touch with Arth Tyagi. You can start off by working on the issues too, making PRs, and suggesting new features. If your code is good, you'll be made a maintainer of DomeCode.

What is DomeCode?πŸ€”

DomeCode is a coding platform that unifies the coding experience by providing all relevant resources and tools in a single platform. On DomeCode, you can practice in six languages including Rust, C, C++, Go, Java and Python. Learn, take notes, discuss stuff on the forum, connect with other developers, collaborate on projects with them, be a part of a developer community and way more!

This repository is the open-source codebase of DomeCode, a unified platform to learn code, practice, discuss, plan tasks, take notes, listen to music and more!

The AGPL license allows the free use of this code-base in other free open-source projects. However, the codebase is NOT free to use for paid projects. For paid projects, the use of this codebase would be paid as well.

If anyone wants to share their experience using DomeCode, you can share it with me personally on Discord(zuck#9454) or send me an email at [email protected] πŸ“§ .

P.S This repository is the open-source codebase of DomeCode. The proprietary codebase of DomeCode is accessible to those in the internal development team only.

What do you get with DomeCode?

  • πŸƒβ€β™‚οΈ Challenges to test your skills;

  • πŸ“– Tutorials to guide programmers of all skill levels;

  • 🧡 Forums to discuss the challenges or anything else programming-related;

  • πŸ—“ Planning tools to take notes πŸ“ and plan tasks πŸ—’οΈ right from where you learn to code/practice code;

  • πŸ“Œ Creator feature to allow you to create listings of your product/project containing all essential information in the form of a shareable link so that no information is left out about your project;

  • 🎢 Lo-Fi Music to program by;

  • βš› Fusion, a disposable code editor with tutorials and preview within it for those getting started with front-end!

This is what the disposable code editor feature looks like

Why DomeCode?πŸ€—

  • You don’t need to navigate to dozens of platforms anymore, DomeCode organizes all the tools and resources for you πŸ“š .
  • You can finally focus more on programming instead of finding the β€œright” website for every small thing ☺️ .
  • You get to collaborate with developers around you πŸ–‡οΈ .
  • DomeCode provides its users with a significant productivity boost ⚑ .
  • Save around 30% of your overall time βŒ› spent in the process of learning a programming concept, taking notes, and practicing it.
  • You simply get more without any hassle 😊 .

Join our community πŸ’¬ on Discord!.

🧰 Tools in DomeCode

At the time of this writing on 4th September, 2020, DomeCode offers the user an array of future that make DomeCode truly a unified platform.

  • βž” Growth Tools

Tracks, Practice, Quizzes, Fusion, Help!, Certificate Programs

  • βž” Planning Tools

Notes, Creator, Tasks

  • βž” Miscellaneous Tools

Music, Forum, Leaderboard, 1v1 challenges

  • βž” Blog

  • βž” Social Tools

  • βž” Messaging

User Finder, Bored!

Unreleased features are highlighted.

πŸ“† Milestones so far

  • Launched the alpha version on 5th August, 2020.
  • 15000+ web traffic requests within 24 hours of the alpha release.
  • 275+ registered users as of 2nd September, 2020.
  • Bounce Rate optimal according to Google Analytics.
  • Total number of users over the past 4 weeks ( both registered and unregistered ) sum up to 2, 400+ according to Google Analytics.
  • More than 2 sessions on average per user where the users include unregistered users as well.
  • Upcoming - Stable Release in December.
  • An exclusive blog. Apply to become a DomeCode blogger here.
  • According to Alexa Analytics, DomeCode is ranked 28k in India and 485k in world ( out of 3M websites ) as of 9th November '20.

Modules part of only the Proprietary repository

  • Upcoming Coding workspace
  • Fusion
  • Messages and its notification system
  • Upcoming 1v1 features
  • Upcoming Bored! feature
  • Upcoming Help! feature
  • Music Player ( updated )

If you want to work on anything apart from the modules present in the open-source repository, please contact us.

Features that are part of the open-source repo

  • Notes
  • Tasks
  • Coder
  • Quizzes
  • Forum
  • Resources
  • Upcoming User Finder
  • Music player ( current version )
  • Blog Platform by DomeCode

You will be able to contribute to all of these features and they will be kept open-source forever. You will also be able to contribute to the base front-end of DomeCode without having to apply to be a part of the internal development team.

Once we are profitable, we might reconsider some of the modules that are kept private to be made open-source. We <3 open-source. However, at the same time it's important to minimize the chances of replicability by making the parts of DomeCode that are not generic in nature, closed-source at least until we are a bigger player in the market.

Setup

Please refer to the Contribution Guide

  • Clone your fork of this repository.
  • Run the migrations.
  • Run this on your localhost.

Things to take care of :

  • Have at the very least some level of prior knowledge in Django, enough to know how to make migrations, create super user and other very simple tasks. Recommended knowledge to substantially contribute in the project is, you should know how to work with Django Channels, build your own APIs, work with async Python, use Celery without running into issues all the time, know how web servers work in general and know how to properly use Docker. These are not the requirements per se but it's all recommended.

  • Use the devmanage.py command instead of manage.py command on development environments.

  • This project uses decouple so make sure to make a local .env file in your root directory of the project containing all the variables with dummy values.

  • The variables you should include are the ones with config() next to them in the devmanage.py file. If there's an error due to the missing value of an environment variable, it can be fixed with ease by passing in appropriate variables. It's pretty generic stuff.

  • The Postgres DB user should be a SUPERUSER to apply migrations for the latest search technique being used in DomeCode.

Here's a dummy .env file you can use:

SECRET_KEY="hk"
DB_HOST="abcd"
SOCIAL_AUTH_GITHUB_KEY="hk"
SOCIAL_AUTH_GITHUB_SECRET="hk"
SOCIAL_AUTH_GOOGLE_OAUTH2_KEY="hk"
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET="hk"
SECURE_HSTS_SECONDS="10"
SESSION_COOKIE_SECURE="False"
CSRF_COOKIE_SECURE="False"
AWS_ACCESS_KEY_ID="hc"
AWS_SECRET_ACCESS_KEY="hc"
AWS_STORAGE_BUCKET_NAME="hc"
ADMIN_URL="admin"
JUDGE0_RAPID_API_KEY="abc"
HONEYBADGER_KEY="abc"
DB_NAME="domecode"
DB_USER="dummy"
DB_PASSWORD="password"
  • If you want to do something involving the judge api, get your own api key from here and place that key in the JUDGE0_RAPID_API_KEY variable in .env

  • Once you're done with that, you can start working on fixing the nitty gritty details, make improvements, finding issues and reporting them in the issues tab of this repository. Create PRs and have fun!

Note : You should take note of that if you are working on the fork of this repository, you have to sync it before pushing changes to the fork and making a PR to this repo. How to sync changes made on this repo to your fork? Have a look at this.

Code Style

  • Flake8 is used.

  • Make sure the code has docstrings unless of course the code is pretty generic and is self explainable. If you came up with a solution by yourself on some sort of problem, make sure to include comments and/or docstring(s).

  • The static files root is the notes directory which is weird and I'm aware of it but since the inception of this platform, the root static directory has been situated there and it's alright. notes app was the first app on this, anyway.

Note : In the repo's language stats, HTML and CSS have been disabled intentionally.

Workflows on this repository

  • Django CI is on the Private codebase.
  • Greetings Workflow
  • Codeql Code Analysis workflow
  • Python Lint

πŸ§‘ Contributors

πŸ’Ό Work on DomeCode

If you want to be an outside collaborator with involvement in DomeCode at your own frequency, just make contributions in this repository.

However, if you want to be part of the DomeCode's new features development team ( we have a private repository for that ) and want to have any future benefits that MIGHT be tied to working on DomeCode in any form, apply at [email protected] for the following positions :

  • Full Stack Web Developer ( FrontEnd - React.js/Vue.js/Angular.js ( preferably React.js) ; Backend - Django/Flask(preferably Django) )
  • Generalist Full Stack Developer ( include what technologies you know of inside the email )
  • Front-End Developer ( React.js/Vue.js/Angular.js ( preferably React.js ) along with basic understanding of Python.
  • Backend Developer ( Django/Flask ( preferably Django ) ; basic understanding of JS and a basic sense of aesthetics )
  • Mobile Developer ( React Native/Flutter, Native Android/Native iOS ( preferably ReactNative for Android and iOS )
  • ML Developer ( fluent in Python, familiar with TensorFlow )

OR

Apply using this.

A few other projects you might wanna look out for

Geddit

Being used in DomeCode

code (2)

Visit here.

Judge

judge (1)

image

Visit here which is also available as PyPi package here.

Installable with : pip install django-judge Thanks for visiting this!

domecode-opensource's People

Contributors

arhaan avatar arthtyagi avatar dependabot[bot] avatar karx1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

domecode-opensource's Issues

Light Mode

DomeCode currently has a dark mode. However, not all users like the same theme, and for the users that would like the flexibility to shift from dark mode, the light mode is essential.

Notes :

  1. Dark Mode in terms of just inverting the colors is not acceptable.
  2. If you take up this issue, please make sure to actually construct a light mode that fits the whole website.

Test Cases based autograding

Autograding at the moment is based on the static input given to the user in the question. However, test cases would be a better way to assess the user's submission.

JS rendering after every keystroke.

In Fusion Immerse, the JS typed into the editor is rendered after every keystroke and we don't want that since that's annoying for the user.

yapf doesn't handle all flake8 errors

The way yapf is currently set up, it only handles some of the flake8 errors. However, I believe I can get it to handle more of them. I'll be working on this over the next two days, so if you could assign this issue to me that would be great!

(paging @arthtyagi )

Question and answer forms should be on the same page

Currently, in the quizzes module, the question and the answer form are on seperate pages. This makes it hard to answer the question correctly, especially if you do not remember the question or the answer choices. The PR for this should essentially merge both pages onto one page.

DomeCode Judge and IDE

The editor present in tracks right now is only in light mode and even though it works, a custom coding editor with options including -

  • Download File
  • Run the solution
  • Run the solution against custom test cases

would be a whole lot better.

The approach to be used is, EC2 instances that run our code OR deployed Kubernetes Clusters/Docker Swarms that run our code.

Verbose Errors

If there's an error in the deployed version of the platform, all that the user sees is a Server Error page but it'd be great if the errors were verbose and told the user what went wrong in a simple language.

How to solve it?
Use try and catch in views.py.

Some tests are skipped due to duplicate names

Test names must be unique per scope otherwise the second test overrides the first one with the same name.

For example if you had a test file that does:

def test_a():
    pass

def test_a():
    pass

Then only the second test_a will be ran. More details here.

These are the tests that are overriding previously defined tests due to this problem:

def test_list_url_is_resolves(self):

def test_list_url_is_resolves(self):

def test_list_url_is_resolves(self):

def test_list_url_is_resolves(self):

def test_event_model(self):

I found this issue automatically, see other issues here

Extensive Wiki

Extensive Wiki with detail on each feature of DomeCode that's marketable yet technical.

The current Wiki for DomeCode is mostly just the Documentation.

Things to be added in the Wiki :

  • Detail on each feature
  • How to use each feature
  • Common issues and fixes

New logo

A new industry logo for DomeCode

Fusion doesn't extend base.html

The Fusion editor (/fusion/immerse) does not extend from base.html. This causes the footer to be too big, and other graphical issues. If this seperate code "branches out" too much, then it will eventually become unmaintainable and cannot be easily re-integrated with the main code.

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.