- intial gatsbyJS setup

- setting up tailwindcss and other plugins
- designing the landing page
- creating a reusable button component
This commit is contained in:
Amruth Pillai 2020-07-03 13:00:46 +05:30
parent d2e3227d01
commit 70ef926b70
18 changed files with 19842 additions and 0 deletions

69
.gitignore vendored Normal file
View File

@ -0,0 +1,69 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
# nyc test coverage
.nyc_output
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (http://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Typescript v1 declaration files
typings/
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# dotenv environment variable files
.env*
# gatsby files
.cache/
public
# Mac files
.DS_Store
# Yarn
yarn-error.log
.pnp/
.pnp.js
# Yarn Integrity file
.yarn-integrity

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
14.5.0

4
.prettierignore Normal file
View File

@ -0,0 +1,4 @@
.cache
package.json
package-lock.json
public

1
.prettierrc Normal file
View File

@ -0,0 +1 @@
{}

99
README.md Normal file
View File

@ -0,0 +1,99 @@
<!-- AUTO-GENERATED-CONTENT:START (STARTER) -->
<p align="center">
<a href="https://www.gatsbyjs.org">
<img alt="Gatsby" src="https://www.gatsbyjs.org/monogram.svg" width="60" />
</a>
</p>
<h1 align="center">
Gatsby's hello-world starter
</h1>
Kick off your project with this hello-world boilerplate. This starter ships with the main Gatsby configuration files you might need to get up and running blazing fast with the blazing fast app generator for React.
_Have another more specific idea? You may want to check out our vibrant collection of [official and community-created starters](https://www.gatsbyjs.org/docs/gatsby-starters/)._
## 🚀 Quick start
1. **Create a Gatsby site.**
Use the Gatsby CLI to create a new site, specifying the hello-world starter.
```shell
# create a new Gatsby site using the hello-world starter
gatsby new my-hello-world-starter https://github.com/gatsbyjs/gatsby-starter-hello-world
```
1. **Start developing.**
Navigate into your new sites directory and start it up.
```shell
cd my-hello-world-starter/
gatsby develop
```
1. **Open the source code and start editing!**
Your site is now running at `http://localhost:8000`!
_Note: You'll also see a second link: _`http://localhost:8000/___graphql`_. This is a tool you can use to experiment with querying your data. Learn more about using this tool in the [Gatsby tutorial](https://www.gatsbyjs.org/tutorial/part-five/#introducing-graphiql)._
Open the `my-hello-world-starter` directory in your code editor of choice and edit `src/pages/index.js`. Save your changes and the browser will update in real time!
## 🧐 What's inside?
A quick look at the top-level files and directories you'll see in a Gatsby project.
.
├── node_modules
├── src
├── .gitignore
├── .prettierrc
├── gatsby-browser.js
├── gatsby-config.js
├── gatsby-node.js
├── gatsby-ssr.js
├── LICENSE
├── package-lock.json
├── package.json
└── README.md
1. **`/node_modules`**: This directory contains all of the modules of code that your project depends on (npm packages) are automatically installed.
2. **`/src`**: This directory will contain all of the code related to what you will see on the front-end of your site (what you see in the browser) such as your site header or a page template. `src` is a convention for “source code”.
3. **`.gitignore`**: This file tells git which files it should not track / not maintain a version history for.
4. **`.prettierrc`**: This is a configuration file for [Prettier](https://prettier.io/). Prettier is a tool to help keep the formatting of your code consistent.
5. **`gatsby-browser.js`**: This file is where Gatsby expects to find any usage of the [Gatsby browser APIs](https://www.gatsbyjs.org/docs/browser-apis/) (if any). These allow customization/extension of default Gatsby settings affecting the browser.
6. **`gatsby-config.js`**: This is the main configuration file for a Gatsby site. This is where you can specify information about your site (metadata) like the site title and description, which Gatsby plugins youd like to include, etc. (Check out the [config docs](https://www.gatsbyjs.org/docs/gatsby-config/) for more detail).
7. **`gatsby-node.js`**: This file is where Gatsby expects to find any usage of the [Gatsby Node APIs](https://www.gatsbyjs.org/docs/node-apis/) (if any). These allow customization/extension of default Gatsby settings affecting pieces of the site build process.
8. **`gatsby-ssr.js`**: This file is where Gatsby expects to find any usage of the [Gatsby server-side rendering APIs](https://www.gatsbyjs.org/docs/ssr-apis/) (if any). These allow customization of default Gatsby settings affecting server-side rendering.
9. **`LICENSE`**: This Gatsby starter is licensed under the 0BSD license. This means that you can see this file as a placeholder and replace it with your own license.
10. **`package-lock.json`** (See `package.json` below, first). This is an automatically generated file based on the exact versions of your npm dependencies that were installed for your project. **(You wont change this file directly).**
11. **`package.json`**: A manifest file for Node.js projects, which includes things like metadata (the projects name, author, etc). This manifest is how npm knows which packages to install for your project.
12. **`README.md`**: A text file containing useful reference information about your project.
## 🎓 Learning Gatsby
Looking for more guidance? Full documentation for Gatsby lives [on the website](https://www.gatsbyjs.org/). Here are some places to start:
- **For most developers, we recommend starting with our [in-depth tutorial for creating a site with Gatsby](https://www.gatsbyjs.org/tutorial/).** It starts with zero assumptions about your level of ability and walks through every step of the process.
- **To dive straight into code samples, head [to our documentation](https://www.gatsbyjs.org/docs/).** In particular, check out the _Guides_, _API Reference_, and _Advanced Tutorials_ sections in the sidebar.
## 💫 Deploy
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/gatsbyjs/gatsby-starter-hello-world)
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/import/project?template=https://github.com/gatsbyjs/gatsby-starter-hello-world)
<!-- AUTO-GENERATED-CONTENT:END -->

BIN
assets/images/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

5
gatsby-browser.js Normal file
View File

@ -0,0 +1,5 @@
import "./src/styles/global.css";
import "firebase/auth";
import "firebase/analytics";
import "firebase/firestore";

58
gatsby-config.js Normal file
View File

@ -0,0 +1,58 @@
/**
* Configure your Gatsby site with this file.
*
* See: https://www.gatsbyjs.org/docs/gatsby-config/
*/
module.exports = {
plugins: [
{
resolve: `gatsby-plugin-prefetch-google-fonts`,
options: {
fonts: [
{
family: `Montserrat`,
variants: [`400`, `500`, `600`, `700`],
},
],
},
},
`gatsby-plugin-react-helmet`,
{
resolve: `gatsby-plugin-manifest`,
options: {
name: `Reactive Resume`,
short_name: `RxResume`,
start_url: `/`,
background_color: `#FFFFFF`,
theme_color: `#444444`,
display: `standalone`,
},
},
`gatsby-plugin-postcss`,
{
resolve: `gatsby-source-filesystem`,
options: {
name: `images`,
path: `${__dirname}/assets/images/`,
},
},
`gatsby-plugin-sharp`,
`gatsby-transformer-sharp`,
{
resolve: "gatsby-plugin-firebase",
options: {
credentials: {
apiKey: "AIzaSyCfC075KJNwsMWDTm6k8QCtWno48okM7wY",
authDomain: "rx-resume.firebaseapp.com",
databaseURL: "https://rx-resume.firebaseio.com",
projectId: "rx-resume",
storageBucket: "rx-resume.appspot.com",
messagingSenderId: "493152774539",
appId: "1:493152774539:web:ecaa1222f5e1bcf8fb678e",
measurementId: "G-83G3Y6DPJ6",
},
},
},
],
};

3
gatsby-ssr.js Normal file
View File

@ -0,0 +1,3 @@
import "firebase/auth";
import "firebase/analytics";
import "firebase/firestore";

19383
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

46
package.json Normal file
View File

@ -0,0 +1,46 @@
{
"name": "reactive-resume",
"private": true,
"description": "A free and open-source resume builder.",
"version": "2.0.0",
"license": "MIT",
"scripts": {
"build": "gatsby build",
"develop": "gatsby develop",
"format": "prettier --write \"**/*.{js,jsx,ts,tsx,json,md}\"",
"start": "npm run develop",
"serve": "gatsby serve",
"clean": "gatsby clean",
"test": "echo \"Write tests! -> https://gatsby.dev/unit-testing\" && exit 1"
},
"dependencies": {
"classnames": "^2.2.6",
"firebase": "^7.15.5",
"gatsby": "^2.23.12",
"gatsby-image": "^2.4.12",
"gatsby-plugin-firebase": "^0.2.0-beta.4",
"gatsby-plugin-manifest": "^2.4.17",
"gatsby-plugin-postcss": "^2.3.9",
"gatsby-plugin-prefetch-google-fonts": "^1.4.3",
"gatsby-plugin-react-helmet": "^3.3.9",
"gatsby-plugin-sharp": "^2.6.17",
"gatsby-source-filesystem": "^2.3.18",
"gatsby-transformer-sharp": "^2.5.10",
"react": "^16.12.0",
"react-dom": "^16.12.0",
"react-firebase-hooks": "^2.2.0",
"react-helmet": "^6.1.0",
"react-loader-spinner": "^3.1.14"
},
"devDependencies": {
"prettier": "2.0.5",
"tailwindcss": "^1.4.6"
},
"repository": {
"type": "git",
"url": "https://github.com/AmruthPillai/Reactive-Resume"
},
"bugs": {
"url": "https://github.com/AmruthPillai/Reactive-Resume/issues"
}
}

3
postcss.config.js Normal file
View File

@ -0,0 +1,3 @@
module.exports = () => ({
plugins: [require("tailwindcss")],
});

View File

@ -0,0 +1,22 @@
import React from "react";
import classNames from "classnames";
import Loader from "react-loader-spinner";
import styles from "./Button.module.css";
const Button = ({ text, isLoading, outline, className }) => {
const getClasses = classNames(styles.container, className, {
[styles.outline]: outline,
});
return (
<div className={getClasses}>
{isLoading ? (
<Loader type="ThreeDots" color="#FFF" height={18} width={28} />
) : (
text
)}
</div>
);
};
export default Button;

View File

@ -0,0 +1,16 @@
.container {
padding: 6px 24px;
@apply flex items-center cursor-pointer inline-flex rounded font-semibold bg-primary text-inverse;
}
.container:hover {
@apply bg-primary-dark;
}
.container.outline {
@apply border border-primary bg-inverse text-primary;
}
.container.outline:hover {
@apply bg-inverse-dark;
}

87
src/pages/index.js Normal file
View File

@ -0,0 +1,87 @@
import React from "react";
import { graphql } from "gatsby";
import GatsbyImage from "gatsby-image";
import Button from "../components/shared/Button";
const Home = ({ data }) => {
return (
<div className="container mt-24">
<div className="flex items-center">
<GatsbyImage
className="shadow-md rounded"
fixed={data.file.childImageSharp.fixed}
/>
<div className="ml-12">
<h1 className="text-5xl font-bold">Reactive Resume</h1>
<h2 className="mt-1 text-3xl text-gray-500">
A free and open-source resume builder.
</h2>
<div className="mt-12 flex">
<Button text="Go to App" />
<Button className="ml-8" outline text="Source Code" />
</div>
</div>
</div>
<div className="pt-8">
<Feature title="Create a resume thats worthy of who you are.">
Keep up with the latest trends in resume design without having to
start from scratch. With new templates being designed every week and
having made it that easy to design your own templates and submit them
to the community, youll never have to copy and edit your friends
resume again.
</Feature>
<Feature title="Updating your resume shouldnt be a chore.">
The biggest problem Ive faced was when I had to update my resume when
I learned a new skill or found a new job. The ever-shifting layouts
and inconsistency with design over a number of years made it difficult
to update your own resume, but Reactive Resume makes it as easy as few
clicks.
</Feature>
<Feature title="Kickstarting your career shouldnt come at a cost.">
There are brilliant alternatives to this app like{" "}
<a href="/">Novoresume</a> and <a href="/">Zety</a>, but they come at
a cost, mainly because of the time the developers and the marketing
they had to incur to make the product. This app might not be better
than them, but it does cater to people who are just not in a position
to pay hundreds of dollars to create a resume to bootstrap their
career.
</Feature>
</div>
<footer className="my-24">
<p className="font-medium text-gray-500">
Licensed under <a href="/">MIT</a> | Made with love by{" "}
<a href="https://www.amruthpillai.com/">Amruth Pillai</a>
</p>
</footer>
</div>
);
};
const Feature = ({ title, children }) => {
return (
<div className="mt-16">
<h3 className="text-3xl">{title}</h3>
<p className="mt-8 text-xl leading-loose">{children}</p>
</div>
);
};
export const query = graphql`
query {
file(relativePath: { eq: "logo.png" }) {
childImageSharp {
fixed(width: 256, height: 256) {
...GatsbyImageSharpFixed
}
}
}
}
`;
export default Home;

27
src/styles/global.css Normal file
View File

@ -0,0 +1,27 @@
:root {
--color-primary: #444;
--color-primary-dark: #333;
--color-inverse: #fff;
--color-inverse-dark: #f5f5f5;
}
@tailwind base;
@tailwind components;
@tailwind utilities;
@import "~react-loader-spinner/dist/loader/css/react-spinner-loader.css";
html,
body {
font-size: 12px;
@apply text-primary;
font-family: "Montserrat", sans-serif;
}
a {
@apply text-blue-600 font-medium;
}
a:hover {
@apply underline;
}

BIN
static/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

18
tailwind.config.js Normal file
View File

@ -0,0 +1,18 @@
module.exports = {
purge: ["./src/**/*.js", "./src/**/*.jsx", "./src/**/*.ts", "./src/**/*.tsx"],
theme: {
container: {
center: true,
},
extend: {
colors: {
primary: "var(--color-primary)",
"primary-dark": "var(--color-primary-dark)",
inverse: "var(--color-inverse)",
"inverse-dark": "var(--color-inverse-dark)",
},
},
},
variants: {},
plugins: [],
};