Start here
Where to host a student project and share the link
In short
To host a student project so a professor can open it, run it on a server that hands the project a public link instead of running it on your own laptop. Anyone can then open the work from their own device, without you being around. The fastest route is to zip the code folder without venv or node_modules, upload it to Netrun, answer a couple of questions about the project and get an HTTPS address. You can put that link on a slide, in your report, or turn it into a QR code. For a website the free plan is enough: it sleeps while nobody uses it and wakes up on its own when the link is opened.
The usual story: the project runs, you start it in a terminal, open the address on your own laptop, and that is where it ends. That is not enough at a defense. "It works on my machine" is not something a professor can verify. They need a link that opens on their own computer or phone, both the evening before and during the presentation itself. Hence the question of where to host a student project when you have no server and no desire to learn server administration three days before the deadline.
With Netrun this takes an evening: you zip the folder with your code, upload it, answer a couple of questions about the project and get a public HTTPS address. No rented server, no web server config, no certificates. Below is what to strip out of the project before uploading, which mistakes most often break a student project once it leaves your laptop, and how to end up with a link you are happy to put in a presentation.
Zip the folder without the extra weight#
Take the project folder and delete everything that gets installed during a build: venv or .venv for Python, node_modules for JavaScript, target, bin, obj and build folders. They blow the archive up many times over and the upload drags on for nothing — we install the dependencies ourselves from requirements.txt, package.json or whatever your project uses. Keep the source code, the dependency file and any small demo data. Pack the result as a ZIP; RAR, 7z and tar also work.
Remove localhost and the hard-coded port#
This is the number one reason a student project opens on a laptop but not at a link. The code usually says 127.0.0.1 or localhost and a port such as 5000 or 8000 written in by hand. Change the address to 0.0.0.0 and read the port number from the PORT environment variable — the platform fills that in for you. In Flask, Django, FastAPI, Express and almost any framework this is a one-line change where the app starts.
Move passwords and keys out of the code#
In coursework the database password, bot token or third-party API key often sits right in a file next to the code. That is a bad idea both at the defense and after it: the project archive tends to travel around your classmates and end up attached to a report. Read those values from environment variables instead — during setup Netrun asks for them and passes them in encrypted, so they never sit in the archive or on GitHub. Do not include your .env file in the archive.
Put demo data in the /data folder#
If your project writes to disk — a SQLite database, uploaded files, saved results — keep it in the persistent /data folder. Anything written there survives a code update and a restart, while files sitting next to the code are recreated on the next publish. You can also fill the database in advance: the Data tab in your dashboard lists the files and lets you upload and download them. If you bring a project with your own docker-compose, the persistent storage is the volumes declared in your file.
Upload the project and get the link#
Open Netrun and upload the archive, or import the code folder from GitHub, including a private repository — no git and no terminal required. The platform works out the language and framework, builds the project and starts it. Status and logs are visible in your dashboard in real time, so a startup error shows up immediately instead of as a blank page. At the end you get a public HTTPS address.
Check the link on a phone and put it in your slides#
Open the address on a phone using mobile data rather than your home Wi-Fi — that tests the project exactly the way your professor will see it. Make sure the home page opens, not only the one page you kept testing. Put the link on the title slide and in your written report, and turn it into a QR code with any generator so the room can open the project without typing an address.
After that the project takes care of itself: the link stays the same, and if you fix something in the code before the defense you can upload a new version to the same address. For a website the free plan is usually enough — it sleeps when nobody has used it for a while and wakes up in a couple of seconds when the link is opened, so the first visit after a pause is a little slower. If your coursework is a Telegram bot or a background script, the free plan gives you three days of running time, which normally covers preparation and the defense itself; for a longer life there is the Pro plan with no pauses. Try Netrun.
Common questions
How long does it take to publish a coursework project?
Usually an evening, and most of that goes on preparing the folder: removing build artifacts, fixing the address and port, moving passwords out. The upload and build themselves take minutes. If you are doing this the night before the defense, leave an hour of slack in case the project does not build on the first try.
It works on my laptop but the link shows nothing. What now?
Nine times out of ten the start address is to blame: the app listens on 127.0.0.1 or on a port written into the code by hand. Switch the address to 0.0.0.0 and take the port from the PORT environment variable. If that is not it, open the project logs in your dashboard — they show whether the app crashed at startup and on which line.
Can I demo a project that uses a database?
Yes. With SQLite, keep the database file in the persistent /data folder so records are not lost on a code update. If you need a full database such as PostgreSQL or MySQL, run it as a separate service next to the app with docker-compose — one project can tie together up to five services.
How do I make a QR code for the project?
Take the project link and run it through any free QR code generator, then drop the image on a slide. You do not need a separate address for it — the code points at the same public link. Scan it with a phone camera before the defense so you are not testing it in front of the room.
What happens to the project after the defense?
A website keeps running at the same link until you delete it: on the free plan it sleeps while nobody uses it and wakes up when the link is opened. If your coursework is a bot or a background script, the free plan gives it three days of running time, after which the project is switched off while its code and settings stay in place. You can leave the project up as a portfolio piece to show at interviews, or delete it from your dashboard in one action to free the slot for your next project. Deleting a project removes its code and settings, so keep your own copy of the source archive.
Do I have to put the code on GitHub?
No. Uploading the folder as an archive is enough — no git and no command line involved. GitHub import exists, including private repositories, but it is just another way to bring in the same code. If your professor also wants a link to the source, GitHub is useful for that separately from publishing.
Is this free hosting?
For websites — yes. On the free plan a website lives as long as you like: it sleeps when nobody visits and wakes up by itself when someone opens it, and you pay nothing for a server. A bot or a background script can be started and tried for free for 3 days — they are busy all the time and cannot sleep, so after that they need the Pro plan. For several projects there are slots you can buy.
Which languages and technologies are supported?
Python, Node.js, Go, Rust, Ruby, PHP, Java, .NET, Deno, Bun, Elixir, static sites and bash scripts. You can bring your own Dockerfile or docker-compose, but more often the stack is detected from your code automatically.
Where do I set tokens and other secret values?
Every project has a Secrets tab where you set the values from your code — for example the token from BotFather. We store them encrypted: you can see the variable names, but the values are shown to no one, including you.
Why does my website sometimes sleep?
On the free plan, websites sleep after being idle and wake up in a couple of seconds on the first request. On the Pro plan your project runs without sleeping.