--- title: Getting started with Codespaces order: 13 --- :::note This documentation assumes that you have a GitHub account with a repository forked from `freesewing/freesewing`. ::: ## What is Codespaces? [GitHub Codespaces][ghcs] (Codespaces) is an online service from [GitHub][gh] that allows you to edit files and run computer programs via a web browser. The files and computer programs are hosted on and run from a remote server run by GitHub. [gh]: https://github.com [ghcs]: https://github.com/features/codespaces For FreeSewing, you can use Codespaces to edit our repository files to modify existing designs, add new files to create new designs, and run the FreeSewing lab website so you can test designs. You can also edit, add, and test documentation files in Codespaces. Because all of this is is done online via a web browser, you do not need to have or use your own computer to perform this development work. ## Accessing Codespaces Access Codespaces from the GitHub website while logged in: - The "Your Codespaces" page is accessed via the "Codespaces" link at the top of any GitHub page. - A shortcut URL is: https://github.com/codespaces ## Creating a codespace To create a new codespace: - Select the "New codespace" button at the top of the Your Codespaces page. - A shortcut URL is: https://github.com/codespaces/new This will open a "Create a New Codespace" page. On the Create a New Codespace page, select the options for your codespace: - Repository -> ("`username/freesewing`" assuming that is the name of your GitHub repository) - Branch -> (select the branch you want to use) - Region -> (select the region most appropriate for you) - Machine type -> (choose "2-core") - Press the "Create codespace" button. The Codespaces app will open in the browser window. The Codespaces app is basically the [Visual Studio Code][vs] app with Codespaces and GitHub integration built in. [vs]: https://code.visualstudio.com (Wait 45 seconds or so for the Codespace app to clone the repository from GitHub to the codespace repository and start.) ## Editing files You can browse and edit files in your codespace repository from within the app: - On the Activity Bar on the far left side of the page, select the Explorer icon. (The icon looks like two pages of paper.) - Use the Explorer sidebar to browse your repository and select a file to edit. - Edit the file in the main window of the app. ## Saving, committing, and pushing changes Auto-save is enabled by default, so any changes you make are automatically saved in your codespace repository. To commit changes to your codespace repository: - In the Activity Bar on the far left side of the page, select the Source Control icon. - In the Source Control sidebar you can see a list of changed files. - Press the "+" plus icon next to a file to stage it in preparation to commit. - Type a commit message in the text box and press the "Commit" button. This commits the staged files to your codespace repository. To push committed changes from your codespace repository back to your GitHub repository: - After committing changes to your codespace repository, press the "Sync Changes" button to push the committed changes to your GitHub repository. - There is also an "..." ellipses menu at the top of the Source Control sidebar that you can use. Select the "Push" menu item. ## Running the lab, dev, and org websites In the "Terminal" panel at the bottom of the page, you can run commands. To start the lab website (to view and test new designs and design changes): - In the Terminal panel, run `yarn kickstart` and then `yarn lab`. To start the dev or org websites (to view and test documentation changes): - dev: In the Terminal panel, run `cd sites/dev` and `yarn start`. - org: In the Terminal panel, run `cd sites/org` and `yarn start`. After the lab, dev, or org website starts: - The usual `localhost:8000` port will automatically be forwarded to a custom URL. - A pop-up will appear saying that the port has been forwarded. The "Open in browser" button on the pop-up will open a new browser tab/window with the custom URL. - You can also access the custom URL via the "Ports" panel. :::tip An example of a custom URL: `https://username-ominous-space-waffle-rwpgzw5q15vqc52q9-8000.preview.app.github.dev/` ::: ## To make a website publicly available Forwarded ports are private by default. The custom URL page is accessible only to you, the GitHub user who owns the codespace, while you are logged into your GitHub account. However, you can make the port public so others can access it (or so you can access it on a different browser while not logged into GitHub). To make the port public: - In the Ports panel, right-click on the port and select Port Visibility -> Public. - The custom URL will be now be a publicly-accessible forwarded port. You can copy and share the custom URL. ## Starting and stopping a codespace You can start and stop your codespace via the Your Codespaces page. - To start: Click on the codespace name to browse to the Codespaces app URL for that codespace. (You can also right-click to copy the URL and open it in a different browser window.) - To stop: Open the "..." ellipses menu next to the codespace and select "Stop codespace". :::warning Codespaces continue to run unless explicitly stopped or the idle timeout is reached. (Closing the Codespaces app window does not stop the codespace.) ::: ## Renaming a codespace Each new codespace is generated with a random name. You can rename a codespace to make it easier to identify. (This will help if you have more than one codespace.) To rename a codespace: - Go to the Your Codespaces page. - Open the "..." ellipses menu next to the codespace and select "Rename". ## Codespaces settings You can access GitHub Settings via the user icon menu in the upper right corner of any GitHub page (but not on the Codespaces app page). - Selecting the "Settings" menu item will open the GitHub Settings page. - The Codespaces settings are under "Codespaces" in the left sidebar on the Settings page. - A shortcut URL is: https://github.com/settings/codespaces Among the Codespaces settings available are: - "Default idle timeout" (how long codespaces continue to run when idle, before being stopped) - "Default retention period" (how long codespace repositories are kept when unused, before being deleted) :::note Do not be confused by the other Settings icon/menu at the bottom left of the Codespaces app page. That is where settings for the Codespaces app and Visual Studio Code editor are located. ::: ## Usage and Quotas To check usage: - Usage information is under "Billing and plans" in the left sidebar on the Settings page. - A shortcut URL is: https://github.com/settings/billing About quotas: - As a free account user, you have a quota of 120 core-hours of usage and 15 GB of storage per billing month. That is the total for all your codespaces combined. - However, because your codespace uses a 2-core machine, you effectively have only 60 hours of usage per month. - (You can also select a 4-core machine for your codespace, but that would reduce the effective usage quota to only 30 hours per month.) - You will receive email notifications and and _toast_ messages in the Codespaces app when you have used 75%, 90%, and 100% of your quotas. - Quotas reset each month at the start of your account's billing cycle. (Billing cycle start/end dates are different for each user.) :::warning Storage used by a codespace is counted against the quota regardless of whether the codespace is running or stopped. If you are no longer actively using a codespace, you may want to delete it so its storage no longer continues to count towards your quota. ::: :::tip Don't worry -- you won't get a bill if you exceed your quota! Instead, you will just be unable to start any of your codespaces until the start of the next billing month. And, if you have any work-in-progress changes that you need access to before then, you can export those changes to a new GitHub branch. ::: ## Deleting a codespace To delete a codespace: - Go to the Your Codespaces page. - Open the "..." ellipses menu next to the codespace and select "Delete". :::note RELATED For more information, please see: - [GitHub Codebases documentation](https://docs.github.com/en/codespaces). - [About billing for GitHub Codespaces](https://docs.github.com/en/billing/managing-billing-for-github-codespaces/about-billing-for-github-codespaces) :::