A portfolio can be published by putting its pages and images somewhere people can open them in a browser. A contact form also needs somewhere to handle submissions. If people sign in to see their own records, you need to decide who can see each record and where it is stored.
In this article
Terms to know before you start
- Deploy means making your site or app available at a URL. Publishing an updated version of your portfolio is also a deployment.
- Static hosting delivers files you prepare in advance, such as portfolio pages and images.
- PaaS (platform as a service) provides an environment that runs your code. A booking app can use it to check availability and accept reservations.
- VPS (virtual private server) is a virtual server you rent. You install the software your app needs and manage the server's settings and updates.
- API is an interface programs use to exchange data. A contact form can use an API to pass a submission to the program that handles it.
- Database (DB) stores records so you can find and update them later, such as who made a reservation and when.
Choose a host based on what your app does
To narrow down your options, write down where your code will run and where your data will stay after launch.
| What you built | Where to start | Why |
|---|---|---|
| Portfolio, gallery, or information page | Static hosting | You can prepare the pages and images in advance. |
| Site with a contact form | Static hosting plus a form service | A separate service can accept submissions and send notifications. |
| Booking app with sign-in or members' area | Host the interface separately from the service that handles data, or run the app on a PaaS and connect a database | Each operation needs to check who can view or change the record. |
| App that needs custom server or network settings | VPS | You can manage those settings yourself. |
Start with static hosting for a portfolio
Static hosting sends your prepared files to the browser. You can publish hand-written HTML directly. If you use a site generator, a build creates the files to publish. When you add a project, build the files again and publish the new version. JavaScript still runs in the browser, so visitors can filter a list or switch views. GitHub Pages is one example that publishes HTML, CSS, and JavaScript from GitHub. GitHub Pages overview
Decide where a contact form sends its data
The form itself can appear on a static page. A hosted form service, a feature provided by the host, or your own API can accept the submission and send a notification. For example, Netlify Forms handles submissions from HTML forms configured for its service. Netlify Forms setup
If receiving a notification is enough, a hosted form feature can get you started. Consider an API and an admin page when you need to issue reference numbers or show past messages by assignee. If you implement email notifications yourself, keep the email service's API key on the server. Anyone who receives a file containing the key in their browser can see it.
Decide where bookings are processed and stored
A booking app checks whether a slot is open and whether the user can change a particular reservation. Those checks and the database are still needed when the interface is delivered as static files.
If a service can accept bookings and restrict what each user can see, you can host just the interface on a static host. If you wrote a Node.js or Python server, a PaaS can run it. The platform handles basic server management, while you update your application's libraries and decide what each user can do. Render Web Services is one example. Render Web Services guide
KamuiDash for a booking app on GitHub
If your Node.js or Python booking app is on GitHub and this is your first deployment with a database, consider KamuiDash. You can deploy the app from GitHub and set up PostgreSQL for reservations on the same platform. Without setting up a server from scratch, you can make a test reservation on the live site and check that the record survives an app update. KamuiDash app settings · KamuiDash database settings
If your database already runs elsewhere, first check whether you can keep using that connection.
Consider a VPS when you need to manage server settings
With a VPS, you rent and configure a virtual server, such as a DigitalOcean Droplet. You manage operating system updates, choose which traffic to allow, set up HTTPS to encrypt browser traffic, and recover the app when it stops. A VPS makes sense when you need that control and can handle the ongoing work. DigitalOcean Droplet setup guide
Test your app at its public URL
Try one action a real visitor would take. Open a portfolio and its images from another device. Submit the contact form and verify the notification. For an app with a database, create a record, redeploy the app, and check that you can still retrieve the record. In a members-only booking app, also sign in with a second account and check that it cannot view or edit another user's bookings.
Compare the cost of running the app, the database, file storage, and data transfer. For a demo, check how long the first request takes. For an app people will keep using, check how long the database retains data and how backups work.
Related articles
KamuiDash is a PaaS that deploys web apps from GitHub and lets you connect PostgreSQL. KamuiDash