andredias / codelab Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
Only show a finite number of projects per page.
Use blue as the official code formatter.
Which Python is available? 3.9? 3.8?
Currently, code snippets are only stored in Redis with a TTL of a few days. A better approach is to store them in a database for persistence. I'm still not sure what kind of database is ideal. MongoDB and Postgres seem to be good candidates.
There is no automated test for Codelab yet. It is necessary to add a GitHub Actions entry and another step in Makefile for that.
Despite Redis having more features and being faster than DynamoDB, it won't be possible to use it in a serverless deployment due to its costs. DynamoDB is all we've got.
Some related articles that might be useful:
Currently, clicking on the project title redirects to the project Dojo. But it might not be very explicit. An edit button for the project will make this clearer.
The dependencies aren't being satisfied. For example, the frontend is not built automatically before running docker-compose.
Not sure if this is really necessary as long as we can find alternatives for the tree view and other panels.
Currently, the description is being held by a <p>
tag, which does not handle line breaks correctly. One solution might be to change the paragraph to a <textarea>
. Another could be using Markdown or RestructuredText in descriptions and then compile it into HTML.
Although wait_until_responsive
works fine, it might be interesting to use the retry
decorator from Tenacity instead.
Create an icon that copies the current URL to the clipboard so that it can be shared with others.
For example, when the client tries to run a program but receives a 500 error, what should they do?
/projects
, for example, transform an array of projects in JSON from Redis into an array of Pydantic Objects that will be transformed at the end into a JSON array by FastAPI. There must be some way to return the information closer to the way it comes from Redis.
Go, Rust, Javascript, SQL(ite)
See https://github.com/engineer-man/piston/blob/master/container/install_script.sh It contains examples of language installations.
TailwindCSS pollutes HTML a lot and should be removed. However, the current CSS depends on Tailwindcss' base for CSS reset or normalize. This should be kept.
Markdown will allow better text descriptions
home > python > Title
to home > title
?
Despite codebox
executes Python code only, the frontend must be prepared to work with any registered language. Additionally, the backend should have an API entry just to inform the available languages. Later, this feature should migrate to codebox
.
We could maintain project history by adding a new field that points to a previous revision. It is very similar to what version control uses internally.
codebox
should go into a new repository. This repository might become an open source project similar to snekbox
Used for debugging, console.log
should not go to production.
Expanding/contracting buttons, panes etc.
Currently, projects are loaded every time the user hits home. It would be better to store all projects in a Vuex store that keeps everything and only load new projects from the server, based on their timestamp.
Later, we should store projects locally in the browser using local storage (https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage)
Project details, such as the execution time out, must be determined in the backend instead of the frontend. There is a risk of someone directly accessing the backend with an infinite time process, for example.
how it works
. Maybe it can work also as the project's documentation.Direct access to a project page or reloading that page does not work. You get a blank page and the backend is not contacted.
Include the code for google analytics
Insert a button to create a new project related to the current filtered language. Example: button to create a new Python project.
A few months ago, I wrote an article about the Perfect Python Project. There is a GitHub repository for it at https://github.com/andredias/perfect_python_project. Some of the ideas in that article weren't applied to Codelab/Codebox because these projects are older. I want to update them to use those ideas.
Google has this tool called PageSpeed that provides recommendations about how to improve the page.
Codebox has moved to a separated repository and has a new REST API that replaces the old way to use it (instantiating containers at each execution).
The Codebox directory present in Codelab must be removed and obtained directly from its repository.
Python Discord has a very similar sandbox container called snekbox
which uses some very good ideas that we can also apply in codebox
:
HTTP
instead of stdin
, stdout
, stderr
There is another similar project called Piston that is based on LXC
containers that might be useful too.
As CodeLab and CodeBox became open source, it is important to create links for them in the CodeLab interface. Maybe a Fork me on GitHub ribbon.
How it works
, Termos de uso
, Contato
GitHub uses a neat button to create different kinds of Pull Requests (link).
Let's do something like this for the New project
button
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.