@ -1,4 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
. "$(dirname "$0")/_/husky.sh"
|
|
||||||
|
|
||||||
yarn lint
|
|
||||||
@ -1,131 +1,2 @@
|
|||||||
# [💻 LiveTerm - build terminal styled websites in minutes!](https://liveterm.vercel.app)
|
# [mattdangelo.co](https://mattdangelo.co)
|
||||||
|
Personal website forked from the [LiveTerm](https://github.com/Cveinnt/LiveTerm) repo
|
||||||
Highly customizable, easy-to-use, and minimal terminal styled website template, powered by Next.js.
|
|
||||||
|
|
||||||
Building a simple website with LiveTerm only takes **minutes**, and you only need to work with **one** file: `config.json`. After you cloned this repository, simply run `yarn install && yarn dev` and start editing `config.json` to build your website!
|
|
||||||
|
|
||||||
LiveTerm can be used to build a variety of websites:
|
|
||||||
|
|
||||||
- [personal website](https://cveinnt.com)
|
|
||||||
- [browser startpage](https://livetermstart.vercel.app/)
|
|
||||||
- [project page](https://liveterm.vercel.app/)
|
|
||||||
- or maybe just a cool browser music player...be creative!
|
|
||||||
|
|
||||||
Feel free to play with the web demo above!
|
|
||||||
|
|
||||||
## 📸 Showcase
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="./demo/demo.gif" width="600"><br>
|
|
||||||
<strong>LiveTerm with different themes</strong>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<img src="./demo/cveinnt.png" width="600"><br>
|
|
||||||
<strong><a href="https://cveinnt.com" target=_blank>my personal website</a></strong>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## 🚀 Ship your LiveTerm site in less than 5 minutes
|
|
||||||
|
|
||||||
LiveTerm requires the `yarn` package manager. You can install `yarn` [here](https://classic.yarnpkg.com/lang/en/docs/install/).
|
|
||||||
|
|
||||||
Simply run the following commmand in your terminal:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
sh -c "$(curl -fsSL https://raw.github.com/Cveinnt/LiveTerm/main/install/install.sh)"
|
|
||||||
```
|
|
||||||
|
|
||||||
This will install LiveTerm to the current directory. You can start building your website with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
cd LiveTerm && yarn dev
|
|
||||||
```
|
|
||||||
|
|
||||||
Start editing `config.json` and try saving and see the updated changes!
|
|
||||||
|
|
||||||
Alternatively, you can clone this repository to a location of your choosing
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/Cveinnt/LiveTerm.git && cd LiveTerm
|
|
||||||
```
|
|
||||||
|
|
||||||
Then install dependencies and start developing there:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
yarn install && yarn dev
|
|
||||||
```
|
|
||||||
|
|
||||||
### Docker Usage
|
|
||||||
|
|
||||||
First, clone the project and edit `config.json` to your liking. Then run the following to start the container in the background:
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
If you **know** what you were doing, you can also try changing `Dockerfile` & `docker-compose.yml`!
|
|
||||||
Learn more about Docker [here](https://docs.docker.com/get-started/overview/ 'here').
|
|
||||||
|
|
||||||
## 📄 Configuration
|
|
||||||
|
|
||||||
### Basic Configuration
|
|
||||||
|
|
||||||
90% of LiveTerm's configurations are done through the `config.json` file.
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
{
|
|
||||||
"readmeUrl": // create a Github README and link it here!
|
|
||||||
"title": // title of the website
|
|
||||||
"name": // your name, included in 'about' command
|
|
||||||
"ascii": // ascii art to display
|
|
||||||
"social": {
|
|
||||||
"github": // your handle
|
|
||||||
"linkedin": // your handle
|
|
||||||
},
|
|
||||||
"email": // your email
|
|
||||||
"ps1_hostname": "liveterm" // hostname in prompt
|
|
||||||
"ps1_username": "visitor", // username in prompt
|
|
||||||
"resume_url": "../resume.pdf", // path to your resume
|
|
||||||
"non_terminal_url": "W",
|
|
||||||
"colors": {
|
|
||||||
"light": {
|
|
||||||
...
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
... // you can use existing templates in themes.json or use your own!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Feel free to change it as you see fit!
|
|
||||||
|
|
||||||
### Themes
|
|
||||||
|
|
||||||
You can find several pre-configured themes in `themes.json`, and you can replace the colors in `config.json` with the theme color you like! The themes are based on the themes on [this website](https://glitchbone.github.io/vscode-base16-term/#/).
|
|
||||||
|
|
||||||
For a better preview of the themes, checkout the images in the `demo` folder.
|
|
||||||
|
|
||||||
### Favicons
|
|
||||||
|
|
||||||
Favicons are located in `public/`, along with the other files you may want to upload to your website. I used this [website](https://www.favicon-generator.org/) to generate favicons.
|
|
||||||
|
|
||||||
### Banner
|
|
||||||
|
|
||||||
You may also want to change the output of the `banner` command. To do that, simply paste your generated banner in `src/utils/bin/commands.ts`. I used this [website](https://manytools.org/hacker-tools/ascii-banner/) to generate my banner.
|
|
||||||
|
|
||||||
### Advanced Configuration
|
|
||||||
|
|
||||||
If you want to further customize your page, feel free to change the source code to your liking!
|
|
||||||
|
|
||||||
## 🌐 Deploy on Vercel
|
|
||||||
|
|
||||||
The easiest way to deploy a Next.js app is to use the [Vercel Platform](https://vercel.com/) from the creators of Next.js.
|
|
||||||
|
|
||||||
You can install `vercel` cli and follow the instruction [here](https://vercel.com/docs/concepts/deployments/overview).
|
|
||||||
|
|
||||||
You can also connect your github account to vercel and have vercel automatically deploy the github repository for you.
|
|
||||||
|
|
||||||
## Credit
|
|
||||||
|
|
||||||
Based on M4TT72's awesome [Terminal](https://github.com/m4tt72/terminal).
|
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 352 KiB |
|
Before Width: | Height: | Size: 2.0 MiB |
|
Before Width: | Height: | Size: 315 KiB |
|
Before Width: | Height: | Size: 334 KiB |
|
Before Width: | Height: | Size: 335 KiB |
|
Before Width: | Height: | Size: 334 KiB |
|
Before Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 335 KiB |
|
Before Width: | Height: | Size: 332 KiB |
|
Before Width: | Height: | Size: 330 KiB |
|
Before Width: | Height: | Size: 216 KiB |
@ -1,59 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# This script installs LiveTerm.
|
|
||||||
#
|
|
||||||
# Found a bug? Report it here: https://github.com/Cveinnt/LiveTerm/issues
|
|
||||||
|
|
||||||
set -e -u
|
|
||||||
|
|
||||||
eval "git clone 'https://github.com/Cveinnt/LiveTerm.git'"
|
|
||||||
|
|
||||||
cd LiveTerm
|
|
||||||
|
|
||||||
echo "LiveTerm cloned! Installing dependencies..."
|
|
||||||
|
|
||||||
if command -v yarn >/dev/null 2>&1 ; then
|
|
||||||
yarn install
|
|
||||||
else
|
|
||||||
cat 1>&2 << 'EOA'
|
|
||||||
/=====================================\\
|
|
||||||
| COMMAND NOT FOUND: 'yarn' |
|
|
||||||
\\=====================================/
|
|
||||||
|
|
||||||
Uh oh! We couldn't find 'yarn' installed on your system.
|
|
||||||
|
|
||||||
You should first install 'yarn' on your system.
|
|
||||||
|
|
||||||
For more information, visit yarn's installation page:
|
|
||||||
|
|
||||||
https://classic.yarnpkg.com/lang/en/docs/install/
|
|
||||||
|
|
||||||
EOA
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
cat <<-'EOM'
|
|
||||||
|
|
||||||
|
|
||||||
█████ ███ ███████████
|
|
||||||
░░███ ░░░ ░█░░░███░░░█
|
|
||||||
░███ ████ █████ █████ ██████ ░ ░███ ░ ██████ ████████ █████████████
|
|
||||||
░███ ░░███ ░░███ ░░███ ███░░███ ░███ ███░░███░░███░░███░░███░░███░░███
|
|
||||||
░███ ░███ ░███ ░███ ░███████ ░███ ░███████ ░███ ░░░ ░███ ░███ ░███
|
|
||||||
░███ █ ░███ ░░███ ███ ░███░░░ ░███ ░███░░░ ░███ ░███ ░███ ░███
|
|
||||||
███████████ █████ ░░█████ ░░██████ █████ ░░██████ █████ █████░███ █████
|
|
||||||
░░░░░░░░░░░ ░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░░ ░░░░░ ░░░░░ ░░░ ░░░░░
|
|
||||||
|
|
||||||
|
|
||||||
LiveTerm has been downloaded to the current directory.
|
|
||||||
You can start developing it with:
|
|
||||||
|
|
||||||
cd LiveTerm && yarn dev
|
|
||||||
|
|
||||||
This will open a local port at http://localhost:3000,
|
|
||||||
where you can preview your website. To apply changes, edit:
|
|
||||||
|
|
||||||
config.json
|
|
||||||
|
|
||||||
And the changes should be applied upon saves!
|
|
||||||
|
|
||||||
EOM
|
|
||||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 764 B |
|
Before Width: | Height: | Size: 4.1 KiB After Width: | Height: | Size: 929 B |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 2.1 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 2.2 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 482 B |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 991 B |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 15 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 3.2 KiB |
|
After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 2.6 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 1.3 KiB |
@ -1,36 +0,0 @@
|
|||||||
// // List of commands that require API calls
|
|
||||||
|
|
||||||
import { getProjects } from '../api';
|
|
||||||
import { getQuote } from '../api';
|
|
||||||
import { getReadme } from '../api';
|
|
||||||
import { getWeather } from '../api';
|
|
||||||
|
|
||||||
export const projects = async (args: string[]): Promise<string> => {
|
|
||||||
const projects = await getProjects();
|
|
||||||
return projects
|
|
||||||
.map(
|
|
||||||
(repo) =>
|
|
||||||
`${repo.name} - <a class="text-light-blue dark:text-dark-blue underline" href="${repo.html_url}" target="_blank">${repo.html_url}</a>`,
|
|
||||||
)
|
|
||||||
.join('\n');
|
|
||||||
};
|
|
||||||
|
|
||||||
export const quote = async (args: string[]): Promise<string> => {
|
|
||||||
const data = await getQuote();
|
|
||||||
return data.quote;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const readme = async (args: string[]): Promise<string> => {
|
|
||||||
const readme = await getReadme();
|
|
||||||
return `Opening GitHub README...\n
|
|
||||||
${readme}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const weather = async (args: string[]): Promise<string> => {
|
|
||||||
const city = args.join('+');
|
|
||||||
if (!city) {
|
|
||||||
return 'Usage: weather [city]. Example: weather casablanca';
|
|
||||||
}
|
|
||||||
const weather = await getWeather(city);
|
|
||||||
return weather;
|
|
||||||
};
|
|
||||||
@ -1,3 +1 @@
|
|||||||
export * from './commands';
|
export * from './commands';
|
||||||
export * from './api_commands';
|
|
||||||
export { default as sumfetch } from './sumfetch';
|
|
||||||
|
|||||||
@ -1,162 +0,0 @@
|
|||||||
{
|
|
||||||
"default": {
|
|
||||||
"light": {
|
|
||||||
"background": "#FBF1C9",
|
|
||||||
"foreground": "#3C3836",
|
|
||||||
"yellow": "#D79921",
|
|
||||||
"green": "#98971A",
|
|
||||||
"gray": "#7C6F64",
|
|
||||||
"blue": "#458588",
|
|
||||||
"red": "#CA2124"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#2E3440",
|
|
||||||
"foreground": "#E5E9F0",
|
|
||||||
"yellow": "#5E81AC",
|
|
||||||
"green": "#A3BE8C",
|
|
||||||
"gray": "#88C0D0",
|
|
||||||
"blue": "#EBCB8B",
|
|
||||||
"red": "#BF616A"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"gruvbox": {
|
|
||||||
"light": {
|
|
||||||
"background": "#FBF1C9",
|
|
||||||
"foreground": "#3C3836",
|
|
||||||
"yellow": "#D79921",
|
|
||||||
"green": "#98971A",
|
|
||||||
"gray": "#7C6F64",
|
|
||||||
"blue": "#458588",
|
|
||||||
"red": "#CA2124"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#1c1c1c",
|
|
||||||
"foreground": "#EBDBB2",
|
|
||||||
"yellow": "#D79921",
|
|
||||||
"green": "#98971A",
|
|
||||||
"gray": "#A89984",
|
|
||||||
"blue": "#458588",
|
|
||||||
"red": "#CA2124"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"dracula": {
|
|
||||||
"light": {
|
|
||||||
"background": "#FFFFDB",
|
|
||||||
"foreground": "#282a36",
|
|
||||||
"yellow": "#ffb86c",
|
|
||||||
"green": "#50fa7b",
|
|
||||||
"gray": "#8B6BB9",
|
|
||||||
"blue": "#67AFC0",
|
|
||||||
"red": "#ff5555"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#282a36",
|
|
||||||
"foreground": "#f8f8f2",
|
|
||||||
"yellow": "#ffb86c",
|
|
||||||
"green": "#50fa7b",
|
|
||||||
"gray": "#bd93f9",
|
|
||||||
"blue": "#8be9fd",
|
|
||||||
"red": "#ff5555"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Nord": {
|
|
||||||
"light": {
|
|
||||||
"background": "#E5E9F0",
|
|
||||||
"foreground": "#2E3440",
|
|
||||||
"yellow": "#5E81AC",
|
|
||||||
"green": "#A3BE8C",
|
|
||||||
"gray": "#88C0D0",
|
|
||||||
"blue": "#EBCB8B",
|
|
||||||
"red": "#BF616A"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#2E3440",
|
|
||||||
"foreground": "#E5E9F0",
|
|
||||||
"yellow": "#5E81AC",
|
|
||||||
"green": "#A3BE8C",
|
|
||||||
"gray": "#88C0D0",
|
|
||||||
"blue": "#EBCB8B",
|
|
||||||
"red": "#BF616A"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Monokai": {
|
|
||||||
"light": {
|
|
||||||
"background": "#F8F8F2",
|
|
||||||
"foreground": "#272822",
|
|
||||||
"yellow": "#F4BF75",
|
|
||||||
"green": "#A6E22E",
|
|
||||||
"gray": "#AE81FF",
|
|
||||||
"blue": "#66D9EF",
|
|
||||||
"red": "#F92672"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#272822",
|
|
||||||
"foreground": "#F8F8F2",
|
|
||||||
"yellow": "#F4BF75",
|
|
||||||
"green": "#A6E22E",
|
|
||||||
"gray": "#AE81FF",
|
|
||||||
"blue": "#66D9EF",
|
|
||||||
"red": "#F92672"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Mocha": {
|
|
||||||
"light": {
|
|
||||||
"background": "#D0C8C6",
|
|
||||||
"foreground": "#3B3228",
|
|
||||||
"yellow": "#F4BC87",
|
|
||||||
"green": "#BEB55B",
|
|
||||||
"gray": "#A89BB9",
|
|
||||||
"blue": "#8AB3B5",
|
|
||||||
"red": "#CB6077"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#3B3228",
|
|
||||||
"foreground": "#D0C8C6",
|
|
||||||
"yellow": "#F4BC87",
|
|
||||||
"green": "#BEB55B",
|
|
||||||
"gray": "#A89BB9",
|
|
||||||
"blue": "#8AB3B5",
|
|
||||||
"red": "#CB6077"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Solarized": {
|
|
||||||
"light": {
|
|
||||||
"background": "#FDF6E3",
|
|
||||||
"foreground": "#586E75",
|
|
||||||
"yellow": "#B58900",
|
|
||||||
"green": "#859900",
|
|
||||||
"gray": "#6C71C4",
|
|
||||||
"blue": "#268BD2",
|
|
||||||
"red": "#DC322F"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#002B36",
|
|
||||||
"foreground": "#93A1A1",
|
|
||||||
"yellow": "#B58900",
|
|
||||||
"green": "#859900",
|
|
||||||
"gray": "#6C71C4",
|
|
||||||
"blue": "#268BD2",
|
|
||||||
"red": "#DC322F"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"Paraiso": {
|
|
||||||
"light": {
|
|
||||||
"background": "#A39E9B",
|
|
||||||
"foreground": "#2F1E2E",
|
|
||||||
"yellow": "#FEC418",
|
|
||||||
"green": "#48B685",
|
|
||||||
"gray": "#815BA4",
|
|
||||||
"blue": "#06B6EF",
|
|
||||||
"red": "#EF6155"
|
|
||||||
},
|
|
||||||
"dark": {
|
|
||||||
"background": "#2F1E2E",
|
|
||||||
"foreground": "#A39E9B",
|
|
||||||
"yellow": "#FEC418",
|
|
||||||
"green": "#48B685",
|
|
||||||
"gray": "#815BA4",
|
|
||||||
"blue": "#06B6EF",
|
|
||||||
"red": "#EF6155"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||