|
1 | | -# just-the-docs-template |
| 1 | +# 10 Days of Code with AI |
2 | 2 |
|
3 | | -This is a *bare-minimum* template to create a [Jekyll] site that: |
| 3 | +This repository contains the course notes and code examples of the course [10 Days of Python with AI]. The course is aimed for curious Vibe coders with no programming background who want to have a wholistic view of coding and ai technologies and the skills to debug, specify and scrutinise code that is mainly produced with AI. |
4 | 4 |
|
5 | | -- uses the [Just the Docs] theme; |
6 | | -- can be built and published on [GitHub Pages]; |
7 | | -- can be built and previewed locally, and published on other platforms. |
| 5 | +The course is mainly produce to use [Visual Studio Code] and [Github Copilot]; and a big part of it uses python for automatization, API calls, web programming, AI programming and more. |
8 | 6 |
|
9 | | -More specifically, the created site: |
| 7 | +The course notes themselves may be found in [10 Days of Code with AI course notes] and the code examples in [git hub code examples]. Once [Visual Studio Code] and [python] are installed in your machine, you can run the examples by simply typing in your terminal: |
10 | 8 |
|
11 | | -- uses a gem-based approach, i.e. uses a `Gemfile` and loads the `just-the-docs` gem; |
12 | | -- uses the [GitHub Pages / Actions workflow] to build and publish the site on GitHub Pages. |
| 9 | +```python |
| 10 | +python <filename>.py |
| 11 | +``` |
13 | 12 |
|
14 | | -To get started with creating a site, simply: |
| 13 | +## Cloning the Repository |
15 | 14 |
|
16 | | -1. click "[use this template]" to create a GitHub repository |
17 | | -2. go to Settings > Pages > Build and deployment > Source, and select GitHub Actions |
| 15 | +If you wish you could install git on your vs code and clone this repository in your local machine. |
18 | 16 |
|
19 | | -If you want to maintain your docs in the `docs` directory of an existing project repo, see [Hosting your docs from an existing project repo](#hosting-your-docs-from-an-existing-project-repo). |
| 17 | +### Installing Bash in Visual Studio Code |
20 | 18 |
|
21 | | -After completing the creation of your new site on GitHub, update it as needed: |
| 19 | +If you're on Windows and want to use Bash in VS Code, you can install [Git for Windows](https://git-scm.com/download/win), which includes Git Bash. |
22 | 20 |
|
23 | | -## Replace the content of the template pages |
| 21 | +1. Download and install Git for Windows. |
| 22 | +2. After installation, open VS Code. |
| 23 | +3. Press <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>P</kbd> and type `Terminal: Select Default Profile`. |
| 24 | +4. Choose `Git Bash` from the list. |
24 | 25 |
|
25 | | -Update the following files to your own content: |
| 26 | +Now, when you open a new terminal in VS Code, it will use Bash. |
26 | 27 |
|
27 | | -- `index.md` (your new home page) |
28 | | -- `README.md` (information for those who access your site repo on GitHub) |
| 28 | +> **Note:** Installing Git for Windows will also install Git Bash. You do not need to install Git separately—Git Bash is included as part of the Git installation package. |
29 | 29 |
|
30 | | -## Changing the version of the theme and/or Jekyll |
| 30 | +### Create a virtual environmenta and activate |
| 31 | +A **virtual environment** in Python is an isolated workspace that allows you to install and manage packages separately from your global Python installation. This means each project can have its own dependencies, versions, and settings without interfering with other projects or the system Python. |
31 | 32 |
|
32 | | -Simply edit the relevant line(s) in the `Gemfile`. |
| 33 | +**Why use a virtual environment?** |
33 | 34 |
|
34 | | -## Adding a plugin |
| 35 | +- Isolation: Keeps project dependencies separate, avoiding conflicts between packages required by different projects. |
| 36 | +- Reproducibility: Makes it easier to share your project with others, since you can specify exactly which packages and versions are needed. |
| 37 | +Safety: Prevents accidental changes to system-wide Python packages. |
35 | 38 |
|
36 | | -The Just the Docs theme automatically includes the [`jekyll-seo-tag`] plugin. |
| 39 | +Typical workflow: |
| 40 | +- Create a virtual environment for your project. |
| 41 | +- Activate it before working. |
| 42 | +- Install packages using pip—these go only into the virtual environment. |
| 43 | +- Deactivate when done. |
37 | 44 |
|
38 | | -To add an extra plugin, you need to add it in the `Gemfile` *and* in `_config.yml`. For example, to add [`jekyll-default-layout`]: |
| 45 | +This approach is especially useful in collaborative or production settings, ensuring consistency and minimizing dependency issues. |
39 | 46 |
|
40 | | -- Add the following to your site's `Gemfile`: |
| 47 | +To create a Python virtual environment, run the following command in your terminal: |
41 | 48 |
|
42 | | - ```ruby |
43 | | - gem "jekyll-default-layout" |
44 | | - ``` |
45 | | - |
46 | | -- And add the following to your site's `_config.yml`: |
47 | | - |
48 | | - ```yaml |
49 | | - plugins: |
50 | | - - jekyll-default-layout |
51 | | - ``` |
52 | | -
|
53 | | -Note: If you are using a Jekyll version less than 3.5.0, use the `gems` key instead of `plugins`. |
54 | | - |
55 | | -## Publishing your site on GitHub Pages |
56 | | - |
57 | | -1. If your created site is `YOUR-USERNAME/YOUR-SITE-NAME`, update `_config.yml` to: |
58 | | - |
59 | | - ```yaml |
60 | | - title: YOUR TITLE |
61 | | - description: YOUR DESCRIPTION |
62 | | - theme: just-the-docs |
63 | | -
|
64 | | - url: https://YOUR-USERNAME.github.io/YOUR-SITE-NAME |
65 | | -
|
66 | | - aux_links: # remove if you don't want this link to appear on your pages |
67 | | - Template Repository: https://github.com/YOUR-USERNAME/YOUR-SITE-NAME |
68 | | - ``` |
69 | | - |
70 | | -2. Push your updated `_config.yml` to your site on GitHub. |
71 | | - |
72 | | -3. In your newly created repo on GitHub: |
73 | | - - go to the `Settings` tab -> `Pages` -> `Build and deployment`, then select `Source`: `GitHub Actions`. |
74 | | - - if there were any failed Actions, go to the `Actions` tab and click on `Re-run jobs`. |
75 | | - |
76 | | -## Building and previewing your site locally |
77 | | - |
78 | | -Assuming [Jekyll] and [Bundler] are installed on your computer: |
79 | | - |
80 | | -1. Change your working directory to the root directory of your site. |
| 49 | +```bash |
| 50 | +python -m venv venv |
| 51 | +``` |
81 | 52 |
|
82 | | -2. Run `bundle install`. |
| 53 | +This will create a new directory called `venv` containing the virtual environment. |
83 | 54 |
|
84 | | -3. Run `bundle exec jekyll serve` to build your site and preview it at `localhost:4000`. |
| 55 | +To activate the virtual environment: |
85 | 56 |
|
86 | | - The built site is stored in the directory `_site`. |
| 57 | +- On Windows: |
| 58 | + ```bash |
| 59 | + .\venv\Scripts\activate |
| 60 | + ``` |
| 61 | +- On macOS/Linux/bash terminal: |
| 62 | + ```bash |
| 63 | + source venv/bin/activate |
| 64 | + ``` |
87 | 65 |
|
88 | | -## Publishing your built site on a different platform |
| 66 | +Once activated, you can install packages using `pip` and they will be isolated to this environment. |
89 | 67 |
|
90 | | -Just upload all the files in the directory `_site`. |
| 68 | +To deactivate the Python virtual environment, simply run: |
91 | 69 |
|
92 | | -## Customization |
| 70 | +```bash |
| 71 | +deactivate |
| 72 | +``` |
93 | 73 |
|
94 | | -You're free to customize sites that you create with this template, however you like! |
| 74 | +This will return your terminal to the global Python environment. |
95 | 75 |
|
96 | | -[Browse our documentation][Just the Docs] to learn more about how to use this theme. |
97 | 76 |
|
98 | | -## Hosting your docs from an existing project repo |
| 77 | +### Clone this repository |
99 | 78 |
|
100 | | -You might want to maintain your docs in an existing project repo. Instead of creating a new repo using the [just-the-docs template](https://github.com/just-the-docs/just-the-docs-template), you can copy the template files into your existing repo and configure the template's Github Actions workflow to build from a `docs` directory. You can clone the template to your local machine or download the `.zip` file to access the files. |
| 79 | +To clone this repository to your local machine, open your terminal and run: |
101 | 80 |
|
102 | | -### Copy the template files |
| 81 | +```bash |
| 82 | +git clone https://github.com/StructuralWizard/10DaysOfCode.github.io.git |
| 83 | +``` |
103 | 84 |
|
104 | | -1. Create a `.github/workflows` directory at your project root if your repo doesn't already have one. Copy the `pages.yml` file into this directory. GitHub Actions searches this directory for workflow files. |
| 85 | +This will create a local copy of the repository in your current directory. |
105 | 86 |
|
106 | | -2. Create a `docs` directory at your project root and copy all remaining template files into this directory. |
| 87 | +### Install the dependencies of this repository |
| 88 | +To install the dependencies listed in `requirements.txt`, make sure your virtual environment is activated, then run: |
107 | 89 |
|
108 | | -### Modify the GitHub Actions workflow |
| 90 | +```bash |
| 91 | +pip install -r requirements.txt |
| 92 | +``` |
109 | 93 |
|
110 | | -The GitHub Actions workflow that builds and deploys your site to Github Pages is defined by the `pages.yml` file. You'll need to edit this file to that so that your build and deploy steps look to your `docs` directory, rather than the project root. |
| 94 | +This will install all the required Python packages for the project. |
111 | 95 |
|
112 | | -1. Set the default `working-directory` param for the build job. |
| 96 | +### Run site in local server |
| 97 | +This site has been created using [Just the Docs] theme and the hosted in [GitHub Pages]. You can [Browse our documentation] for more information. |
113 | 98 |
|
114 | | - ```yaml |
115 | | - build: |
116 | | - runs-on: ubuntu-latest |
117 | | - defaults: |
118 | | - run: |
119 | | - working-directory: docs |
120 | | - ``` |
| 99 | +To visualise the github site in the browser rather than editing its markdown you can run `bundle exec jekyll serve` from the main 10DaysOfCode folder where you have the _config.yml file. |
121 | 100 |
|
122 | | -2. Set the `working-directory` param for the Setup Ruby step. |
| 101 | +Assuming [Jekyll] and [Bundler] are installed on your computer: |
123 | 102 |
|
124 | | - ```yaml |
125 | | - - name: Setup Ruby |
126 | | - uses: ruby/setup-ruby@v1 |
127 | | - with: |
128 | | - ruby-version: '3.3' |
129 | | - bundler-cache: true |
130 | | - cache-version: 0 |
131 | | - working-directory: '${{ github.workspace }}/docs' |
132 | | - ``` |
| 103 | +1. Change your working directory to the root directory of your site. |
133 | 104 |
|
134 | | -3. Set the path param for the Upload artifact step: |
| 105 | +2. Run `bundle install`. |
135 | 106 |
|
136 | | - ```yaml |
137 | | - - name: Upload artifact |
138 | | - uses: actions/upload-pages-artifact@v3 |
139 | | - with: |
140 | | - path: docs/_site/ |
141 | | - ``` |
| 107 | +3. Run `bundle exec jekyll serve` to build your site and preview it at `localhost:4000`. |
142 | 108 |
|
143 | | -4. Modify the trigger so that only changes within the `docs` directory start the workflow. Otherwise, every change to your project (even those that don't affect the docs) would trigger a new site build and deploy. |
| 109 | + The built site is stored in the directory `_site`. |
144 | 110 |
|
145 | | - ```yaml |
146 | | - on: |
147 | | - push: |
148 | | - branches: |
149 | | - - "main" |
150 | | - paths: |
151 | | - - "docs/**" |
152 | | - ``` |
153 | 111 |
|
154 | | -## Licensing and Attribution |
| 112 | +Note: If you are using a Jekyll version less than 3.5.0, use the `gems` key instead of `plugins`. |
155 | 113 |
|
156 | | -This repository is licensed under the [MIT License]. You are generally free to reuse or extend upon this code as you see fit; just include the original copy of the license (which is preserved when you "make a template"). While it's not necessary, we'd love to hear from you if you do use this template, and how we can improve it for future use! |
157 | 114 |
|
158 | | -The deployment GitHub Actions workflow is heavily based on GitHub's mixed-party [starter workflows]. A copy of their MIT License is available in [actions/starter-workflows]. |
159 | 115 |
|
160 | 116 | ---- |
161 | 117 |
|
162 | | -[^1]: [It can take up to 10 minutes for changes to your site to publish after you push the changes to GitHub](https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll#creating-your-site). |
163 | | - |
| 118 | +[Visual Studio Code]: https://code.visualstudio.com/ |
| 119 | +[Github Copilot]: https://code.visualstudio.com/docs/copilot/overview |
| 120 | +[python]: https://www.python.org/downloads/ |
164 | 121 | [Jekyll]: https://jekyllrb.com |
165 | 122 | [Just the Docs]: https://just-the-docs.github.io/just-the-docs/ |
166 | 123 | [GitHub Pages]: https://docs.github.com/en/pages |
167 | | -[GitHub Pages / Actions workflow]: https://github.blog/changelog/2022-07-27-github-pages-custom-github-actions-workflows-beta/ |
168 | 124 | [Bundler]: https://bundler.io |
169 | | -[use this template]: https://github.com/just-the-docs/just-the-docs-template/generate |
170 | | -[`jekyll-default-layout`]: https://github.com/benbalter/jekyll-default-layout |
171 | | -[`jekyll-seo-tag`]: https://jekyll.github.io/jekyll-seo-tag |
172 | | -[MIT License]: https://en.wikipedia.org/wiki/MIT_License |
173 | | -[starter workflows]: https://github.com/actions/starter-workflows/blob/main/pages/jekyll.yml |
174 | | -[actions/starter-workflows]: https://github.com/actions/starter-workflows/blob/main/LICENSE |
| 125 | +[10 Days of Python with AI]: https://youtube.com/@10daysofpythonwithai?si=3wobcw1e11B7dlZI |
| 126 | +[Structural Wizard]: https://github.com/StructuralWizard/ |
| 127 | +[10 Days of Code with AI course notes]: https://structuralwizard.github.io/10DaysOfCode.github.io/ |
| 128 | +[git hub code examples]: https://github.com/StructuralWizard/10DaysOfCode.github.io/tree/main/_python_code |
0 commit comments