diff --git a/.babelrc b/.babelrc
new file mode 100644
index 00000000..f2396564
--- /dev/null
+++ b/.babelrc
@@ -0,0 +1,4 @@
+{
+ "presets": ["next/babel"],
+ "plugins": ["preval", "macros"]
+}
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 00000000..b58ca5e4
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,12 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 2
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.mdx]
+trim_trailing_whitespace = false
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 00000000..9fa6060a
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,7 @@
+module.exports = {
+ extends: 'react-app',
+ rules: {
+ 'react/react-in-jsx-scope': 'off',
+ 'jsx-a11y/anchor-is-valid': 'off',
+ },
+}
diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
deleted file mode 100644
index a68ea8c4..00000000
--- a/.github/CODEOWNERS
+++ /dev/null
@@ -1 +0,0 @@
-* @uiuxarghya
\ No newline at end of file
diff --git a/.github/images/demo.png b/.github/images/demo.png
deleted file mode 100644
index 94af1d8a..00000000
Binary files a/.github/images/demo.png and /dev/null differ
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
deleted file mode 100644
index 54876ecb..00000000
--- a/.github/workflows/ci.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: CI
-
-on:
- push:
- branches:
- - main
- pull_request:
- branches:
- - main
-
-env:
- CI: true
-
-jobs:
- build:
- name: Build
- runs-on: ubuntu-latest
-
- steps:
- - name: Checkout
- uses: actions/checkout@v2
-
- - name: Use Node 14
- uses: actions/setup-node@v1
- with:
- node-version: 14.x
-
- - uses: actions/cache@v2
- with:
- path: "**/node_modules"
- key: ${{ runner.os }}-modules-${{ hashFiles('**/yarn.lock') }}
-
- - name: Install packages
- run: yarn install
-
- - name: Build
- run: yarn build
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
deleted file mode 100644
index 32118834..00000000
--- a/.github/workflows/codeql-analysis.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-# For most projects, this workflow file will not need changing; you simply need
-# to commit it to your repository.
-#
-# You may wish to alter this file to override the set of languages analyzed,
-# or to provide custom queries or build logic.
-#
-# ******** NOTE ********
-# We have attempted to detect the languages in your repository. Please check
-# the `language` matrix defined below to confirm you have the correct set of
-# supported CodeQL languages.
-#
-name: "CodeQL"
-
-on:
- push:
- branches: [ main ]
- pull_request:
- # The branches below must be a subset of the branches above
- branches: [ main ]
- schedule:
- - cron: '34 23 * * 0'
-
-jobs:
- analyze:
- name: Analyze
- runs-on: ubuntu-latest
- permissions:
- actions: read
- contents: read
- security-events: write
-
- strategy:
- fail-fast: false
- matrix:
- language: [ 'javascript' ]
- # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
- # Learn more:
- # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
-
- steps:
- - name: Checkout repository
- uses: actions/checkout@v2
-
- # Initializes the CodeQL tools for scanning.
- - name: Initialize CodeQL
- uses: github/codeql-action/init@v1
- with:
- languages: ${{ matrix.language }}
- # If you wish to specify custom queries, you can do so here or in a config file.
- # By default, queries listed here will override any specified in a config file.
- # Prefix the list here with "+" to use these queries and those in the config file.
- # queries: ./path/to/local/query, your-org/your-repo/queries@main
-
- # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
- # If this step fails, then you should remove it and run the build manually (see below)
- - name: Autobuild
- uses: github/codeql-action/autobuild@v1
-
- # βΉοΈ Command-line programs to run using the OS shell.
- # π https://git.io/JvXDl
-
- # βοΈ If the Autobuild fails above, remove it and uncomment the following three lines
- # and modify them (or add more) to build your code if your project
- # uses a compiled language
-
- #- run: |
- # make bootstrap
- # make release
-
- - name: Perform CodeQL Analysis
- uses: github/codeql-action/analyze@v1
diff --git a/.gitignore b/.gitignore
index 0a37b0c5..eb8dbc54 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,32 @@
-node_modules
-.next
+# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
+
+# dependencies
+/node_modules
+/.pnp
+.pnp.js
+
+# testing
+/coverage
+
+# next.js
+/.next/
+/out/
+
+# production
+/build
+
+# misc
.DS_Store
-yarn-error.log
-public/*.st
-public/*.toml
-.vscode
-.env.local
\ No newline at end of file
+# debug
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# local env files
+.env.local
+.env.development.local
+.env.test.local
+.env.production.local
+
+.vercel
diff --git a/.prettierignore b/.prettierignore
new file mode 100644
index 00000000..dd081204
--- /dev/null
+++ b/.prettierignore
@@ -0,0 +1 @@
+**/*.mdx
diff --git a/LICENSE b/LICENSE
deleted file mode 100644
index 9a4fe0e9..00000000
--- a/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2021 Arghya Ghosh
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
\ No newline at end of file
diff --git a/README.md b/README.md
index 2941391e..8796a0b0 100644
--- a/README.md
+++ b/README.md
@@ -1,15 +1 @@
-# [Javaistic](https://javaistic.vercel.app/) β
-
-[](https://github.com/javaistic/javaistic/actions/workflows/ci.yml)
-
-
-
-
-
-**An Open Source Java learning website that helps everyone ( especially students ) to learn Java easily.**
-
-
-
-Please visit the [Javaistic release page](https://github.com/javaistic/javaistic/releases)
-for all history releases.
-
-
diff --git a/pages/getting-started.en-US.mdx b/pages/getting-started.en-US.mdx
deleted file mode 100644
index 0f7beea9..00000000
--- a/pages/getting-started.en-US.mdx
+++ /dev/null
@@ -1,59 +0,0 @@
-import Callout from "nextra-theme-docs/callout";
-import Link from "next/link";
-
-# Getting Started
-
-## Installation
-
-Since installation process is slightly different in different devices. So we prefer that you should check the [official installation documentation](https://www.java.com/en/download/help/download_options.html) to install **β Java** on your device.
-
-## Code Editors
-
-There are various types of code editors for programming in Java. The popular ones are listed below :
-
-
-
-| Atom | Bluej | Sublime Text | VS Code | IntelliJ Idea |
-| :------------------------------------------: | :----------------------------------------------: | :-----------------------------------------------------------------------: | :---------------------------------------------------------------: | :----------------------------------------------------------------------------: |
-| [](https://atom.io) | [](https://bluej.org) | [](https://www.sublimetext.com/) | [](https://code.visualstudio.com/) | [](https://www.jetbrains.com/idea/) |
-| Student , Professional | Student | Student | Student , Professional | Professional |
-
-
- You use any of the popular code editors for Java. But my personal favorite is
- **BlueJ** as it is **simple** and **fast**.
-
-
-Or you can use [our online compiler](/compiler).
-
-## Learning
-
-After installing Java and setting up your preferred code editor start [learning](/java-introduction/introduction) from our website.
-
-
-
-
diff --git a/pages/index.en-US.mdx b/pages/index.en-US.mdx
deleted file mode 100644
index 535eceee..00000000
--- a/pages/index.en-US.mdx
+++ /dev/null
@@ -1,86 +0,0 @@
-import Callout from "nextra-theme-docs/callout";
-import Features from "components/features";
-import FeatureJ from "components/featurej";
-
-
Home
-
-
-
-
-
- ##### Learn Java for free.
-
-
-
----
-
-**Javaistic** is an **Open Source** Java program learning site that help students to learn **Java** programming.
-
-Java is a powerful general-purpose programming language.
-It is used to develop desktop and mobile applications, big data processing, embedded systems, and so on.
-According to Oracle, the company that owns Java, Java runs on 3 billion devices worldwide, which makes Java one of the most popular programming languages.
-
-Our Java tutorial will guide you to learn Java one step at a time.
-
-
-
-
-
-
-
-## Features
-
-Its features are:
-
-- Open Source by β€οΈ . ( **It's Open Source. Built with Open Source. Built for Open Source** )
-- Properly Structured Information
-- Simple by Design.
-- Great User Experience
-- Student as well as developer-friendly.
-- Ad-Free Experience.
-
-## Start Learning
-
-Head over to the [Getting Started](/getting-started) page and start learning.
-
-
-
----
-
-##### The site is still in development so there might be some errors .
-
-
-
-
-
-
-
-
-
-Javaistic is created by [@uiuxarghya](https://uiuxarghya.netlify.app/) .
-Follow [@uiuxarghya](https://twitter.com/uiuxarghya) on Twitter for future project
-updates.
-
-Feel free to join the [discussions on GitHub](https://github.com/javaistic/javaistic/discussions)!
diff --git a/pages/java-introduction/jvm-jre-jdk.en-US.mdx b/pages/java-introduction/jvm-jre-jdk.en-US.mdx
deleted file mode 100644
index 47ecf8f1..00000000
--- a/pages/java-introduction/jvm-jre-jdk.en-US.mdx
+++ /dev/null
@@ -1,57 +0,0 @@
-import Callout from "nextra-theme-docs/callout";
-
-# Java JDK, JRE and JVM
-
-In this tutorial, you will learn about [JDK](#what-is-jdk), [JRE](#what-is-jre), and [JVM](#what-is-jvm). You will also learn the key differences between them.
-
-## What is JVM?
-
-JVM (Java Virtual Machine) is an abstract machine that enables your computer to run a Java program.
-
-When you run the Java program, Java compiler first compiles your Java code to bytecode. Then, the JVM translates bytecode into native machine code (set of instructions that a computer's CPU executes directly).
-
-Java is a platform-independent language. It's because when you write Java code, it's ultimately written for JVM but not your physical machine (computer). Since JVM βexecutes the Java bytecode which is platform-independent, Java is platform-independent.
-
-
-
-
-**Working of a Java Program**
-
-
-If you are interested in learning about JVM Architecture, visit [The JVM Architecture Explained](https://dzone.com/articles/jvm-architecture-explained).
-
-## What is JRE?
-
-JRE (Java Runtime Environment) is a software package that provides Java class libraries, Java Virtual Machine (JVM), and other components that are required to run Java applications.
-
-JRE is the superset of JVM.
-
-
-
-
-**Java Runtime Environment**
-
-
-If you need to run Java programs, but not develop them, JRE is what you need. You can download JRE from [Java SE Runtime Environment 8 Downloads page](http://www.oracle.com/technetwork/java/javase/downloads/jre8-downloads-2133155.html).
-
-## What is JDK?
-
-JDK (Java Development Kit) is a software development kit required to develop applications in Java. When you download JDK, JRE is also downloaded with it.
-
-In addition to JRE, JDK also contains a number of development tools (compilers, JavaDoc, Java Debugger, etc).
-
-
-
-
- **Java Development Kit**
-
-
-If you want to develop Java applications, [download JDK](http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html).
-
-## Relationship between JVM, JRE, and JDK.
-
-
-
-
- **Relationship between JVM, JRE, and JDK**
-
diff --git a/pages/java-introduction/meta.en-US.json b/pages/java-introduction/meta.en-US.json
deleted file mode 100644
index b51d237d..00000000
--- a/pages/java-introduction/meta.en-US.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "introduction": "Introduction",
- "hello-world": "Hello World",
- "jvm-jre-jdk": "JDK, JRE and JVM",
- "varaibles-and-literals": "Variables and Literals"
-}
\ No newline at end of file
diff --git a/pages/java-introduction/varaibles-and-literals.en-US.mdx b/pages/java-introduction/varaibles-and-literals.en-US.mdx
deleted file mode 100644
index 8d7d2e8f..00000000
--- a/pages/java-introduction/varaibles-and-literals.en-US.mdx
+++ /dev/null
@@ -1,245 +0,0 @@
-import Callout from "nextra-theme-docs/callout";
-
-# Java Variables and Literals
-
-In this tutorial, we will learn about Java variables and literals with the help of examples.
-
-## Java Variables
-
-A variable is a location in memory (storage area) to hold data.
-
-To indicate the storage area, each variable should be given a unique name (identifier). Learn more about [Java identifiers](https://javaistic.vercel.app/java-introduction/keywords-identifiers).
-
----
-
-#### Create Variables in Java
-
-Here's how we create a variable in Java,
-
-```java
-
-int speedLimit = 80;
-
-```
-
-Here, `speedLimit` is a variable of `int` data type and we have assigned value **80** to it.
-
-The int data type suggests that the variable can only hold integers.
-To learn more, visit [Java data types](https://javaistic.vercel.app/java-introduction/variables-primitive-data-types).
-
-In the example, we have assigned value to the variable during declaration. However, it's not mandatory.
-
-You can declare variables and assign variables separately. For example,
-
-```java
-int speedLimit;
-speedLimit = 80;
-```
-
-
- **Note :** Java is a statically-typed language. It means that all variables
- must be declared before they can be used.
-
-
----
-
-#### Change values of variables
-
-The value of a variable can be changed in the program, hence the name variable. For example,
-
-```
-int speedLimit = 80;
-... .. ...
-speedLimit = 90;
-```
-
-Here, initially, the value of `speedLimit` is **80**. Later, we changed it to **90**.
-
-However, we cannot change the data type of a variable in Java within the same scope.
-
-What is the variable scope?
-
-Don't worry about it for now. Just remember that we can't do something like this:
-
-```
-int speedLimit = 80;
-... .. ...
-float speedLimit;
-```
-
-To learn more, visit: [Can I change declaration type for a variable in Java](http://stackoverflow.com/questions/27092245/can-i-change-declaration-type-for-a-variable-in-java)?
-
----
-
-### Rules for Naming Variables in Java
-
-Java programming language has its own set of rules and conventions for naming variables. Here's what you need to know:
-
-- Java is case sensitive. Hence, `age` and `AGE` are two different variables. For example,
-
-```java
-int age = 24;
-int AGE = 25;
-
-System.out.println(age); // prints 24
-System.out.println(AGE); // prints 25
-```
-
-- Variables must start with either a **letter** or an **underscore**, **\_** or a **dollar**, **$** sign. For example,
-
-```java
-int age; // valid name and good practice
-int _age; // valid but bad practice
-int $age; // valid but bad practice
-```
-
-- Variable names cannot start with numbers. For example,
-
-```java
-int 1age; // invalid variables
-```
-
-- Variable names can't use whitespace. For example,
-
-```java
-int my age; // invalid variables
-```
-
-Here, is we need to use variable names having more than one word, use all lowercase letters for the first word and capitalize the first letter of each subsequent word. For example, `myAge`.
-
-- When creating variables, choose a name that makes sense. For example, `score` , `number` , `level` makes more sense than variable names such as `s` ,`n` , and `l`.
-- If you choose one-word variable names, use all lowercase letters. For example, it's better to use `speed` rather than `SPEED`, or `sPEED`.
-
----
-
-There are 4 types of variables in Java programming language:
-
-- Instance Variables (Non-Static Fields)
-- Class Variables (Static Fields)
-- Local Variables
-- Parameters
-
-If you are interested to learn more about it now, visit Java Variable Types.
-
----
-
-## Java literals
-
-Literals are data used for representing fixed values. They can be used directly in the code. For example,
-
-```java
-int a = 1;
-float b = 2.5;
-char c = 'F';
-```
-
-Here, `1` , `2.5` , and `'F'` are literals.
-
-Here are different types of literals in Java.
-
----
-
-#### 1. Boolean Literals
-
-In Java, boolean literals are used to initialize boolean data types. They can store two values: true and false. For example,
-
-```java
-boolean flag1 = false;
-boolean flag2 = true;
-```
-
-Here, `false` and `true` are two boolean literals.
-
----
-
-#### 2. Integer Literals
-
-An integer literal is a numeric value(associated with numbers) without any fractional or exponential part. There are 4 types of integer literals in Java:
-
-1. binary (base 2)
-2. decimal (base 10)
-3. octal (base 8)
-4. hexadecimal (base 16)
-
-For example:
-
-```java
-
-// binary
-int binaryNumber = 0b10010;
-// octal
-int octalNumber = 027;
-
-// decimal
-int decNumber = 34;
-
-// hexadecimal
-int hexNumber = 0x2F; // 0x represents hexadecimal
-// binary
-int binNumber = 0b10010; // 0b represents binary
-
-```
-
-In Java, binary starts with **0b**, octal starts with **0**, and hexadecimal starts with **0x**.
-
-
- **Note :** Integer literals are used to initialize variables of integer types
- like `byte` , `short` , `int` , and `long` .
-
-
----
-
-#### 3. Floating-point Literals
-
-A floating-point literal is a numeric literal that has either a fractional form or an exponential form. For example,
-
-```java
-class Main {
-public static void main(String[] args) {
-double myDouble = 3.4;
-float myFloat = 3.4F;
-
- // 3.445*10^2
- double myDoubleScientific = 3.445e2;
-
- System.out.println(myDouble); // prints 3.4
- System.out.println(myFloat); // prints 3.4
- System.out.println(myDoubleScientific); // prints 344.5
-
-}
-}
-```
-
-
-
-**Note :** The floating-point literals are used to initialize `float` and `double`
-type variables.
-
-
----
-#### 4. Character Literals
-
-Character literals are unicode character enclosed inside single quotes. For example,
-
-```java
-char letter = 'a';
-```
-
-Here, `a` is the character literal.
-
-We can also use escape sequences as character literals. For example, **\b** (backspace), **\t** (tab), **\n** (new line), etc.
-
----
-
-#### 5. String literals
-
-A string literal is a sequence of characters enclosed inside double-quotes. For example,
-
-```java
-String str1 = "Java Programming";
-String str2 = "Javaistic";
-```
-
-Here, `Java Programming` and `Javaistic` are two string literals.
-
----
diff --git a/pages/meta.en-US.json b/pages/meta.en-US.json
deleted file mode 100644
index fd3dd35d..00000000
--- a/pages/meta.en-US.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "index": "Home",
- "getting-started": "Getting Started",
- "java-introduction": "Java Introduction",
- "change-log": "Change Log"
-}
\ No newline at end of file
diff --git a/postcss.config.js b/postcss.config.js
index 709bebf6..f1f5766e 100644
--- a/postcss.config.js
+++ b/postcss.config.js
@@ -1,3 +1,9 @@
module.exports = {
- plugins: ['tailwindcss', 'postcss-preset-env', 'cssnano']
-}
\ No newline at end of file
+ plugins: [
+ 'postcss-import',
+ 'tailwindcss',
+ 'postcss-nested',
+ 'postcss-focus-visible',
+ 'autoprefixer',
+ ],
+}
diff --git a/prettier.config.js b/prettier.config.js
new file mode 100644
index 00000000..54776553
--- /dev/null
+++ b/prettier.config.js
@@ -0,0 +1,13 @@
+module.exports = {
+ semi: false,
+ singleQuote: true,
+ printWidth: 100,
+ trailingComma: 'es5',
+ arrowParens: 'always',
+ tabWidth: 2,
+ useTabs: false,
+ quoteProps: 'as-needed',
+ jsxSingleQuote: false,
+ bracketSpacing: true,
+ jsxBracketSameLine: false,
+}
diff --git a/public/android-chrome-192x192.png b/public/android-chrome-192x192.png
new file mode 100644
index 00000000..0eef9f4d
Binary files /dev/null and b/public/android-chrome-192x192.png differ
diff --git a/public/android-chrome-512x512.png b/public/android-chrome-512x512.png
new file mode 100644
index 00000000..4ff2dcf4
Binary files /dev/null and b/public/android-chrome-512x512.png differ
diff --git a/public/apple-touch-icon.png b/public/apple-touch-icon.png
new file mode 100644
index 00000000..82373e61
Binary files /dev/null and b/public/apple-touch-icon.png differ
diff --git a/public/favicon-16x16.png b/public/favicon-16x16.png
new file mode 100644
index 00000000..ce98cf86
Binary files /dev/null and b/public/favicon-16x16.png differ
diff --git a/public/favicon-32x32.png b/public/favicon-32x32.png
new file mode 100644
index 00000000..385a2996
Binary files /dev/null and b/public/favicon-32x32.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 00000000..902594c2
Binary files /dev/null and b/public/favicon.ico differ
diff --git a/public/favicon/android-chrome-192x192.png b/public/favicon/android-chrome-192x192.png
deleted file mode 100644
index 94996447..00000000
Binary files a/public/favicon/android-chrome-192x192.png and /dev/null differ
diff --git a/public/favicon/android-chrome-512x512.png b/public/favicon/android-chrome-512x512.png
deleted file mode 100644
index 02831500..00000000
Binary files a/public/favicon/android-chrome-512x512.png and /dev/null differ
diff --git a/public/favicon/android-icon-144x144.png b/public/favicon/android-icon-144x144.png
deleted file mode 100644
index 98994bc1..00000000
Binary files a/public/favicon/android-icon-144x144.png and /dev/null differ
diff --git a/public/favicon/android-icon-192x192.png b/public/favicon/android-icon-192x192.png
deleted file mode 100644
index f7cf577f..00000000
Binary files a/public/favicon/android-icon-192x192.png and /dev/null differ
diff --git a/public/favicon/android-icon-36x36.png b/public/favicon/android-icon-36x36.png
deleted file mode 100644
index 9888d2c5..00000000
Binary files a/public/favicon/android-icon-36x36.png and /dev/null differ
diff --git a/public/favicon/android-icon-48x48.png b/public/favicon/android-icon-48x48.png
deleted file mode 100644
index 6b606941..00000000
Binary files a/public/favicon/android-icon-48x48.png and /dev/null differ
diff --git a/public/favicon/android-icon-72x72.png b/public/favicon/android-icon-72x72.png
deleted file mode 100644
index 466fc2dc..00000000
Binary files a/public/favicon/android-icon-72x72.png and /dev/null differ
diff --git a/public/favicon/android-icon-96x96.png b/public/favicon/android-icon-96x96.png
deleted file mode 100644
index ce1e4019..00000000
Binary files a/public/favicon/android-icon-96x96.png and /dev/null differ
diff --git a/public/favicon/apple-icon-114x114.png b/public/favicon/apple-icon-114x114.png
deleted file mode 100644
index 5c3367e4..00000000
Binary files a/public/favicon/apple-icon-114x114.png and /dev/null differ
diff --git a/public/favicon/apple-icon-120x120.png b/public/favicon/apple-icon-120x120.png
deleted file mode 100644
index aed14445..00000000
Binary files a/public/favicon/apple-icon-120x120.png and /dev/null differ
diff --git a/public/favicon/apple-icon-144x144.png b/public/favicon/apple-icon-144x144.png
deleted file mode 100644
index 98994bc1..00000000
Binary files a/public/favicon/apple-icon-144x144.png and /dev/null differ
diff --git a/public/favicon/apple-icon-152x152.png b/public/favicon/apple-icon-152x152.png
deleted file mode 100644
index 7ceb87f8..00000000
Binary files a/public/favicon/apple-icon-152x152.png and /dev/null differ
diff --git a/public/favicon/apple-icon-180x180.png b/public/favicon/apple-icon-180x180.png
deleted file mode 100644
index 17538fb7..00000000
Binary files a/public/favicon/apple-icon-180x180.png and /dev/null differ
diff --git a/public/favicon/apple-icon-57x57.png b/public/favicon/apple-icon-57x57.png
deleted file mode 100644
index e096984c..00000000
Binary files a/public/favicon/apple-icon-57x57.png and /dev/null differ
diff --git a/public/favicon/apple-icon-60x60.png b/public/favicon/apple-icon-60x60.png
deleted file mode 100644
index b0312f32..00000000
Binary files a/public/favicon/apple-icon-60x60.png and /dev/null differ
diff --git a/public/favicon/apple-icon-72x72.png b/public/favicon/apple-icon-72x72.png
deleted file mode 100644
index 9a1274cd..00000000
Binary files a/public/favicon/apple-icon-72x72.png and /dev/null differ
diff --git a/public/favicon/apple-icon-76x76.png b/public/favicon/apple-icon-76x76.png
deleted file mode 100644
index 276fc857..00000000
Binary files a/public/favicon/apple-icon-76x76.png and /dev/null differ
diff --git a/public/favicon/apple-icon-precomposed.png b/public/favicon/apple-icon-precomposed.png
deleted file mode 100644
index c9012201..00000000
Binary files a/public/favicon/apple-icon-precomposed.png and /dev/null differ
diff --git a/public/favicon/apple-icon.png b/public/favicon/apple-icon.png
deleted file mode 100644
index c9012201..00000000
Binary files a/public/favicon/apple-icon.png and /dev/null differ
diff --git a/public/favicon/apple-touch-icon.png b/public/favicon/apple-touch-icon.png
deleted file mode 100644
index a8cf9761..00000000
Binary files a/public/favicon/apple-touch-icon.png and /dev/null differ
diff --git a/public/favicon/browserconfig.xml b/public/favicon/browserconfig.xml
deleted file mode 100644
index c5541482..00000000
--- a/public/favicon/browserconfig.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-
-#ffffff
\ No newline at end of file
diff --git a/public/favicon/favicon-16x16.png b/public/favicon/favicon-16x16.png
deleted file mode 100644
index 6b8082f4..00000000
Binary files a/public/favicon/favicon-16x16.png and /dev/null differ
diff --git a/public/favicon/favicon-32x32.png b/public/favicon/favicon-32x32.png
deleted file mode 100644
index fd8578dc..00000000
Binary files a/public/favicon/favicon-32x32.png and /dev/null differ
diff --git a/public/favicon/favicon-96x96.png b/public/favicon/favicon-96x96.png
deleted file mode 100644
index ce1e4019..00000000
Binary files a/public/favicon/favicon-96x96.png and /dev/null differ
diff --git a/public/favicon/favicon.ico b/public/favicon/favicon.ico
deleted file mode 100644
index 1741fc87..00000000
Binary files a/public/favicon/favicon.ico and /dev/null differ
diff --git a/public/favicon/manifest.json b/public/favicon/manifest.json
deleted file mode 100644
index 136638c3..00000000
--- a/public/favicon/manifest.json
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "Javaistic",
- "short_name": "Javaistic",
- "icons": [
- {
- "src": "/android-chrome-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "/android-chrome-512x512.png",
- "sizes": "512x512",
- "type": "image/png"
- }
- {
- "src": "\/android-icon-36x36.png",
- "sizes": "36x36",
- "type": "image\/png",
- "density": "0.75"
- },
- {
- "src": "\/android-icon-48x48.png",
- "sizes": "48x48",
- "type": "image\/png",
- "density": "1.0"
- },
- {
- "src": "\/android-icon-72x72.png",
- "sizes": "72x72",
- "type": "image\/png",
- "density": "1.5"
- },
- {
- "src": "\/android-icon-96x96.png",
- "sizes": "96x96",
- "type": "image\/png",
- "density": "2.0"
- },
- {
- "src": "\/android-icon-144x144.png",
- "sizes": "144x144",
- "type": "image\/png",
- "density": "3.0"
- },
- {
- "src": "\/android-icon-192x192.png",
- "sizes": "192x192",
- "type": "image\/png",
- "density": "4.0"
- }
- ]
- "theme_color": "#3884FF",
- "background_color": "#ffffff",
- "display": "standalone"
-}
diff --git a/public/favicon/ms-icon-144x144.png b/public/favicon/ms-icon-144x144.png
deleted file mode 100644
index 98994bc1..00000000
Binary files a/public/favicon/ms-icon-144x144.png and /dev/null differ
diff --git a/public/favicon/ms-icon-150x150.png b/public/favicon/ms-icon-150x150.png
deleted file mode 100644
index 29b6d38f..00000000
Binary files a/public/favicon/ms-icon-150x150.png and /dev/null differ
diff --git a/public/favicon/ms-icon-310x310.png b/public/favicon/ms-icon-310x310.png
deleted file mode 100644
index 93e8f25a..00000000
Binary files a/public/favicon/ms-icon-310x310.png and /dev/null differ
diff --git a/public/favicon/ms-icon-70x70.png b/public/favicon/ms-icon-70x70.png
deleted file mode 100644
index a57ac867..00000000
Binary files a/public/favicon/ms-icon-70x70.png and /dev/null differ
diff --git a/public/favicon/mstile-150x150.png b/public/favicon/mstile-150x150.png
deleted file mode 100644
index 297b3c79..00000000
Binary files a/public/favicon/mstile-150x150.png and /dev/null differ
diff --git a/public/favicon/safari-pinned-tab.svg b/public/favicon/safari-pinned-tab.svg
deleted file mode 100644
index e1f3495a..00000000
--- a/public/favicon/safari-pinned-tab.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/favicon/site.webmanifest b/public/favicon/site.webmanifest
deleted file mode 100644
index bf8e04d2..00000000
--- a/public/favicon/site.webmanifest
+++ /dev/null
@@ -1,55 +0,0 @@
-{
- "name": "Javaistic",
- "short_name": "Javaistic",
- "theme_color": "#3884FF",
- "background_color": "#ffffff",
- "display": "standalone",
- "icons": [
- {
- "src": "/favicon/android-chrome-192x192.png",
- "sizes": "192x192",
- "type": "image/png"
- },
- {
- "src": "/favicon/android-chrome-512x512.png",
- "sizes": "512x512",
- "type": "image/png"
- },
- {
- "src": "/favicon/android-icon-36x36.png",
- "sizes": "36x36",
- "type": "image/png",
- "density": "0.75"
- },
- {
- "src": "/favicon/android-icon-48x48.png",
- "sizes": "48x48",
- "type": "image/png",
- "density": "1.0"
- },
- {
- "src": "/favicon/android-icon-72x72.png",
- "sizes": "72x72",
- "type": "image/png",
- "density": "1.5"
- },
- {
- "src": "/favicon/android-icon-96x96.png",
- "sizes": "96x96",
- "type": "image/png",
- "density": "2.0"
- },
- {
- "src": "/favicon/android-icon-144x144.png",
- "sizes": "144x144",
- "type": "image/png",
- "density": "3.0"
- },
- {
- "src": "/favicon/android-icon-192x192.png",
- "sizes": "192x192",
- "type": "image/png",
- "density": "4.0"
- }
- ]
-}
diff --git a/public/img/gs/atom.png b/public/img/gs/atom.png
deleted file mode 100644
index 0ac47833..00000000
Binary files a/public/img/gs/atom.png and /dev/null differ
diff --git a/public/img/gs/bluej.png b/public/img/gs/bluej.png
deleted file mode 100644
index 7ff947aa..00000000
Binary files a/public/img/gs/bluej.png and /dev/null differ
diff --git a/public/img/gs/intellij-idea.png b/public/img/gs/intellij-idea.png
deleted file mode 100644
index 4c6b0f3b..00000000
Binary files a/public/img/gs/intellij-idea.png and /dev/null differ
diff --git a/public/img/gs/sublime-text.png b/public/img/gs/sublime-text.png
deleted file mode 100644
index 8afbc0fe..00000000
Binary files a/public/img/gs/sublime-text.png and /dev/null differ
diff --git a/public/img/gs/vs-code.png b/public/img/gs/vs-code.png
deleted file mode 100644
index 6c7f5a34..00000000
Binary files a/public/img/gs/vs-code.png and /dev/null differ
diff --git a/public/img/intro/1/1.svg b/public/img/intro/1/1.svg
deleted file mode 100644
index 9f37026e..00000000
--- a/public/img/intro/1/1.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/img/intro/1/2.svg b/public/img/intro/1/2.svg
deleted file mode 100644
index b579ec3a..00000000
--- a/public/img/intro/1/2.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/img/intro/1/3.svg b/public/img/intro/1/3.svg
deleted file mode 100644
index ba4caf05..00000000
--- a/public/img/intro/1/3.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/img/intro/1/4.svg b/public/img/intro/1/4.svg
deleted file mode 100644
index fe19acfa..00000000
--- a/public/img/intro/1/4.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/manifest.json b/public/manifest.json
new file mode 100644
index 00000000..21cde907
--- /dev/null
+++ b/public/manifest.json
@@ -0,0 +1,18 @@
+{
+ "name": "Javaistic",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/public/og.png b/public/og.png
deleted file mode 100644
index b6d0cedb..00000000
Binary files a/public/og.png and /dev/null differ
diff --git a/public/powered-by-vercel.svg b/public/powered-by-vercel.svg
deleted file mode 100644
index c006a920..00000000
--- a/public/powered-by-vercel.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/public/safari-pinned-tab.svg b/public/safari-pinned-tab.svg
new file mode 100644
index 00000000..516657a0
--- /dev/null
+++ b/public/safari-pinned-tab.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/public/sitemap.xml b/public/sitemap.xml
index 8e5c31bb..eaa2d126 100644
--- a/public/sitemap.xml
+++ b/public/sitemap.xml
@@ -9,37 +9,42 @@
https://javaistic.vercel.app/
- 2021-07-05T22:33:49+00:00
+ 2021-07-25T23:02:47+00:001.00
- https://javaistic.vercel.app/getting-started
- 2021-07-05T22:33:49+00:00
+ https://javaistic.vercel.app/docs
+ 2021-07-25T23:02:47+00:000.80
- https://javaistic.vercel.app/java-introduction/introduction
- 2021-07-05T22:33:49+00:00
+ https://javaistic.vercel.app/docs/installation
+ 2021-07-25T23:02:47+00:000.80
- https://javaistic.vercel.app/java-introduction/hello-world
- 2021-07-05T22:33:49+00:00
+ https://javaistic.vercel.app/docs/introduction
+ 2021-07-25T23:02:47+00:000.80
- https://javaistic.vercel.app/java-introduction/jvm-jre-jdk
- 2021-07-05T22:33:49+00:00
+ https://javaistic.vercel.app/docs/hello-world
+ 2021-07-25T23:02:47+00:000.80
- https://javaistic.vercel.app/java-introduction/variables-and-literals
- 2021-07-05T22:33:49+00:00
+ https://javaistic.vercel.app/programs/introduction
+ 2021-07-25T23:02:47+00:000.80
- https://javaistic.vercel.app/change-log
- 2021-07-05T22:33:49+00:00
+ https://javaistic.vercel.app/programs
+ 2021-07-25T23:02:47+00:00
+ 0.80
+
+
+ https://javaistic.vercel.app/brand
+ 2021-07-25T23:02:47+00:000.80
diff --git a/redirects.json b/redirects.json
new file mode 100644
index 00000000..e07f6e7f
--- /dev/null
+++ b/redirects.json
@@ -0,0 +1,15 @@
+[
+ { "source": "/docs/what-is-javaistic", "destination": "/", "permanent": false },
+ { "source": "/discord", "destination": "https://discord.gg/RkHJqvK9r8", "permanent": false },
+ {
+ "source": "/forum",
+ "destination": "https://github.com/javaistic/javaistic/discussions",
+ "permanent": false
+ },
+ {
+ "source": "/docs/slug",
+ "destination": "/docs/slug",
+ "permanent": false
+ },
+ { "source": "/community", "destination": "https://discord.gg/RkHJqvK9r8", "permanent": false }
+]
diff --git a/rehype/withLinkRoles.js b/rehype/withLinkRoles.js
new file mode 100644
index 00000000..b4471119
--- /dev/null
+++ b/rehype/withLinkRoles.js
@@ -0,0 +1,11 @@
+const visit = require('unist-util-visit')
+
+module.exports.withLinkRoles = () => {
+ return (tree) => {
+ visit(tree, 'element', (element) => {
+ if (['ol', 'ul'].includes(element.tagName)) {
+ element.properties.role = 'list'
+ }
+ })
+ }
+}
diff --git a/remark/prism-diff-highlight.js b/remark/prism-diff-highlight.js
new file mode 100644
index 00000000..31bdf229
--- /dev/null
+++ b/remark/prism-diff-highlight.js
@@ -0,0 +1,82 @@
+// https://github.com/PrismJS/prism/blob/master/plugins/diff-highlight/prism-diff-highlight.js
+module.exports = (Prism) => {
+ var LANGUAGE_REGEX = /diff-([\w-]+)/i
+ var HTML_TAG = /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/gi
+ //this will match a line plus the line break while ignoring the line breaks HTML tags may contain.
+ var HTML_LINE = RegExp(
+ /(?:__|[^\r\n<])*(?:\r\n?|\n|(?:__|[^\r\n<])(?![^\r\n]))/.source.replace(/__/g, function () {
+ return HTML_TAG.source
+ }),
+ 'gi'
+ )
+
+ var PREFIXES = Prism.languages.diff.PREFIXES
+
+ Prism.hooks.add('before-sanity-check', function (env) {
+ var lang = env.language
+ if (LANGUAGE_REGEX.test(lang) && !env.grammar) {
+ env.grammar = Prism.languages[lang] = Prism.languages['diff']
+ }
+ })
+ Prism.hooks.add('before-tokenize', function (env) {
+ var lang = env.language
+ if (LANGUAGE_REGEX.test(lang) && !Prism.languages[lang]) {
+ Prism.languages[lang] = Prism.languages['diff']
+ }
+ })
+
+ Prism.hooks.add('wrap', function (env) {
+ var diffLanguage, diffGrammar
+
+ if (env.language !== 'diff') {
+ var langMatch = LANGUAGE_REGEX.exec(env.language)
+ if (!langMatch) {
+ return // not a language specific diff
+ }
+
+ diffLanguage = langMatch[1]
+ diffGrammar = Prism.languages[diffLanguage]
+ }
+
+ // one of the diff tokens without any nested tokens
+ if (env.type in PREFIXES) {
+ /** @type {string} */
+ var content = env.content.replace(HTML_TAG, '') // remove all HTML tags
+
+ /** @type {string} */
+ var decoded = content.replace(/</g, '<').replace(/&/g, '&')
+
+ // remove any one-character prefix
+ var code = decoded.replace(/(^|[\r\n])./g, '$1')
+
+ // highlight, if possible
+ var highlighted
+ if (diffGrammar) {
+ highlighted = Prism.highlight(code, diffGrammar, diffLanguage)
+ } else {
+ highlighted = Prism.util.encode(code)
+ }
+
+ // get the HTML source of the prefix token
+ var prefixToken = new Prism.Token('prefix', PREFIXES[env.type], [/\w+/.exec(env.type)[0]])
+ var prefix = Prism.Token.stringify(prefixToken, env.language)
+
+ // add prefix
+ var lines = [],
+ m
+ HTML_LINE.lastIndex = 0
+ while ((m = HTML_LINE.exec(highlighted))) {
+ lines.push(prefix + m[0])
+ }
+ if (/(?:^|[\r\n]).$/.test(decoded)) {
+ // because both "+a\n+" and "+a\n" will map to "a\n" after the line prefixes are removed
+ lines.push(prefix)
+ }
+ env.content = lines.join('')
+
+ if (diffGrammar) {
+ env.classes.push('language-' + diffLanguage)
+ }
+ }
+ })
+}
diff --git a/remark/utils.js b/remark/utils.js
new file mode 100644
index 00000000..5183fd96
--- /dev/null
+++ b/remark/utils.js
@@ -0,0 +1,124 @@
+const Prism = require('prismjs')
+const loadLanguages = require('prismjs/components/')
+loadLanguages()
+require('./prism-diff-highlight')(Prism)
+
+const HTML_TAG = /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/gi
+const PSEUDO_CLASSES = [
+ 'active',
+ 'any-link',
+ 'blank',
+ 'checked',
+ 'current',
+ 'default',
+ 'defined',
+ 'dir',
+ 'disabled',
+ 'drop',
+ 'empty',
+ 'enabled',
+ 'first',
+ 'first-child',
+ 'first-of-type',
+ 'fullscreen',
+ 'future',
+ 'focus',
+ 'focus-visible',
+ 'focus-within',
+ 'has',
+ 'host',
+ 'host',
+ 'host-context',
+ 'hover',
+ 'indeterminate',
+ 'in-range',
+ 'invalid',
+ 'is',
+ 'lang',
+ 'last-child',
+ 'last-of-type',
+ 'left',
+ 'link',
+ 'local-link',
+ 'not',
+ 'nth-child',
+ 'nth-col',
+ 'nth-last-child',
+ 'nth-last-col',
+ 'nth-last-of-type',
+ 'nth-of-type',
+ 'only-child',
+ 'only-of-type',
+ 'optional',
+ 'out-of-range',
+ 'past',
+ 'picture-in-picture',
+ 'placeholder-shown',
+ 'read-only',
+ 'read-write',
+ 'required',
+ 'right',
+ 'root',
+ 'scope',
+ 'state',
+ 'target',
+ 'target-within',
+ 'user-invalid',
+ 'valid',
+ 'visited',
+ 'where',
+]
+
+Prism.hooks.add('wrap', (env) => {
+ if (env.type === 'atrule') {
+ const content = env.content.replace(HTML_TAG, '')
+ if (content.startsWith('@apply')) {
+ env.classes.push('atapply')
+ }
+ } else if (env.type === 'pseudo-class') {
+ if (!new RegExp(`^::?(${PSEUDO_CLASSES.join('|')})`).test(env.content)) {
+ env.classes = env.classes.filter((x) => x !== 'pseudo-class')
+ }
+ }
+})
+
+module.exports.addImport = function addImport(tree, mod, name) {
+ tree.children.unshift({
+ type: 'import',
+ value: `import { ${name} as _${name} } from '${mod}'`,
+ })
+ return `_${name}`
+}
+
+module.exports.addDefaultImport = function addImport(tree, mod, name) {
+ tree.children.unshift({
+ type: 'import',
+ value: `import _${name} from '${mod}'`,
+ })
+ return `_${name}`
+}
+
+module.exports.addExport = function addExport(tree, name, value) {
+ tree.children.push({
+ type: 'export',
+ value: `export const ${name} = ${JSON.stringify(value)}`,
+ })
+}
+
+module.exports.highlightCode = function highlightCode(code, prismLanguage) {
+ const isDiff = prismLanguage.startsWith('diff-')
+ const language = isDiff ? prismLanguage.substr(5) : prismLanguage
+ const grammar = Prism.languages[isDiff ? 'diff' : language]
+ if (!grammar) {
+ console.warn(`Unrecognised language: ${prismLanguage}`)
+ return Prism.util.encode(code)
+ }
+ let highlighted = Prism.highlight(code, grammar, prismLanguage)
+
+ return language === 'html'
+ ? highlighted.replace(
+ /\*\*(.*?)\*\*/g,
+ (_, text) => `${text}`
+ )
+ : highlighted
+}
diff --git a/remark/withCodeSamples.js b/remark/withCodeSamples.js
new file mode 100644
index 00000000..34f20b68
--- /dev/null
+++ b/remark/withCodeSamples.js
@@ -0,0 +1,67 @@
+const visit = require('unist-util-visit')
+const redent = require('redent')
+const { addImport, highlightCode } = require('./utils')
+
+module.exports = () => {
+ return (tree) => {
+ let component
+ let resizableComponent
+
+ visit(tree, 'code', (node) => {
+ if (node.lang !== 'html') return
+ let hasPreview = false
+ let previewClassName
+ let previewCode
+ let previewSrc
+ let snippet = node.value
+ .replace(
+ /(.*?)<\/template>/is,
+ (m, class1, class2, content) => {
+ hasPreview = true
+ previewClassName = class1 || class2
+ previewCode = content
+ return ''
+ }
+ )
+ .trim()
+ if (!hasPreview) {
+ snippet = node.value
+ .replace(
+ /