├── .env.example
├── .eslintrc.json
├── .gitignore
├── .prettierignore
├── README.md
├── components
├── home
│ ├── card.tsx
│ ├── component-grid.tsx
│ └── terminal.tsx
├── layout
│ ├── index.tsx
│ └── meta.tsx
└── shared
│ ├── carbonAds.tsx
│ ├── counting-numbers.tsx
│ ├── googleAnalytics.tsx
│ ├── icons
│ ├── copy.tsx
│ ├── expanding-arrow.tsx
│ ├── github.tsx
│ ├── index.tsx
│ ├── keyboard-icon.tsx
│ ├── loading-circle.tsx
│ ├── loading-dots.module.css
│ ├── loading-dots.tsx
│ ├── loading-spinner.module.css
│ ├── loading-spinner.tsx
│ └── prompt.tsx
│ ├── leaflet.tsx
│ ├── modal.tsx
│ ├── popover.tsx
│ └── tooltip.tsx
├── lib
├── hooks
│ ├── use-intersection-observer.ts
│ ├── use-local-storage.ts
│ ├── use-scroll.ts
│ └── use-window-size.ts
└── utils.ts
├── next.config.js
├── package.json
├── pages
├── _app.tsx
├── _document.tsx
├── api
│ ├── generate.ts
│ └── og.tsx
├── index.tsx
└── privacy.tsx
├── postcss.config.js
├── prettier.config.js
├── public
├── authjs.webp
├── bg-pattern.svg
├── favicon.ico
├── logo-white.png
├── logo.png
└── logo.svg
├── styles
├── SF-Pro-Display-Medium.otf
└── globals.css
├── tailwind.config.js
├── tsconfig.json
├── utils
└── OpenAIStream.ts
└── yarn.lock
/.env.example:
--------------------------------------------------------------------------------
1 | OPENAI_API_KEY=
2 | NEXT_PUBLIC_GA_ID=
--------------------------------------------------------------------------------
/.eslintrc.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "next/core-web-vitals"
3 | }
4 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2 |
3 | # dependencies
4 | /node_modules
5 | /.pnp
6 | .pnp.js
7 |
8 | # testing
9 | /coverage
10 |
11 | # next.js
12 | /.next/
13 | /out/
14 |
15 | # production
16 | /build
17 |
18 | # misc
19 | .DS_Store
20 | *.pem
21 |
22 | # debug
23 | npm-debug.log*
24 | yarn-debug.log*
25 | yarn-error.log*
26 | .pnpm-debug.log*
27 |
28 | # local env files
29 | .env*.local
30 | .env
31 |
32 | # vercel
33 | .vercel
34 |
35 | # typescript
36 | *.tsbuildinfo
37 | next-env.d.ts
38 |
39 | # IDEs
40 | .vscode
41 | **/.idea
42 | **/coverage
43 | *.sublime-project
44 | *.sublime-workspace
45 |
--------------------------------------------------------------------------------
/.prettierignore:
--------------------------------------------------------------------------------
1 | yarn.lock
2 | node_modules
3 | .next
4 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
GitFluence
4 |
5 |
6 |
7 | Generate the git commands using ChatGPT 8 |
9 | 10 |11 | Introduction · 12 | Tech Stack + Features · 13 |
14 |Tooltip
45 |GitFluence
44 | 45 | 46 |{Intl.NumberFormat().format(count)}
; 34 | } 35 | const easeOutQuad = (t: number, b: number, c: number, d: number) => { 36 | t /= d; 37 | return Math.round(-c * t * (t - 2) + b); 38 | }; 39 | -------------------------------------------------------------------------------- /components/shared/googleAnalytics.tsx: -------------------------------------------------------------------------------- 1 | import Script from "next/script"; 2 | 3 | export default function GoogleAnalytics() { 4 | return ( 5 | <> 6 | 11 | 19 | > 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /components/shared/icons/copy.tsx: -------------------------------------------------------------------------------- 1 | export default function Copy({ className }: { className?: string }) { 2 | return ( 3 | 18 | ); 19 | } 20 | -------------------------------------------------------------------------------- /components/shared/icons/expanding-arrow.tsx: -------------------------------------------------------------------------------- 1 | export default function ExpandingArrow({ className }: { className?: string }) { 2 | return ( 3 |24 | Fast & Easy Git Command Generator 25 |
26 |
31 |
15 | Your privacy is important to us. It is GitFluence's policy to 16 | respect your privacy and comply with any applicable law and 17 | regulation regarding any personal information we may collect about 18 | you, including across our website,{" "} 19 | https://gitfluence.com, and 20 | other sites we own and operate.{" "} 21 |
22 |23 | This policy is effective as of 19 February 2023 and was last 24 | updated on 19 February 2023.{" "} 25 |
26 |28 | Information we collect includes both information you knowingly and 29 | actively provide us when using or participating in any of our 30 | services and promotions, and any information automatically sent by 31 | your devices in the course of accessing our products and services.{" "} 32 |
33 |35 | When you visit our website, our servers may automatically log the 36 | standard data provided by your web browser. It may include your 37 | device’s Internet Protocol (IP) address, your browser type and 38 | version, the pages you visit, the time and date of your visit, the 39 | time spent on each page, other details about your visit, and 40 | technical details that occur in conjunction with any errors you 41 | may encounter.{" "} 42 |
43 |44 | Please be aware that while this information may not be personally 45 | identifying by itself, it may be possible to combine it with other 46 | data to personally identify individual persons.{" "} 47 |
48 |50 | We may collect personal information from you when you do any of 51 | the following on our website:{" "} 52 |
53 |62 | We may collect, hold, use, and disclose information for the 63 | following purposes, and personal information will not be further 64 | processed in a manner that is incompatible with these purposes:{" "} 65 |
66 |67 | Please be aware that we may combine information we collect about 68 | you with general information or research data we receive from 69 | other trusted sources.{" "} 70 |
71 |73 | When we collect and process personal information, and while we 74 | retain this information, we will protect it within commercially 75 | acceptable means to prevent loss and theft, as well as 76 | unauthorized access, disclosure, copying, use, or modification.{" "} 77 |
78 |79 | Although we will do our best to protect the personal information 80 | you provide to us, we advise that no method of electronic 81 | transmission or storage is 100% secure, and no one can guarantee 82 | absolute data security. We will comply with laws applicable to us 83 | in respect of any data breach.{" "} 84 |
85 |87 | We keep your personal information only for as long as we need to. 88 | This time period may depend on what we are using your information 89 | for, in accordance with this privacy policy. If your personal 90 | information is no longer required, we will delete it or make it 91 | anonymous by removing all details that identify you.{" "} 92 |
93 |94 | However, if necessary, we may retain your personal information for 95 | our compliance with a legal, accounting, or reporting obligation 96 | or for archiving purposes in the public interest, scientific, or 97 | historical research purposes or statistical purposes.{" "} 98 |
99 |101 | We do not aim any of our products or services directly at children 102 | under the age of 13, and we do not knowingly collect personal 103 | information about children under 13.{" "} 104 |
105 |We may disclose personal information to:
107 |135 | The personal information we collect is stored and/or processed 136 | where we or our partners, affiliates, and third-party providers 137 | maintain facilities. Please be aware that the locations to which 138 | we store, process, or transfer your personal information may not 139 | have the same data protection laws as the country in which you 140 | initially provided the information. If we transfer your personal 141 | information to third parties in other countries: (i) we will 142 | perform those transfers in accordance with the requirements of 143 | applicable law; and (ii) we will protect the transferred personal 144 | information in accordance with this privacy policy.{" "} 145 |
146 |148 | You always retain the right to withhold personal information from 149 | us, with the understanding that your experience of our website may 150 | be affected. We will not discriminate against you for exercising 151 | any of your rights over your personal information. If you do 152 | provide us with personal information you understand that we will 153 | collect, hold, use and disclose it in accordance with this privacy 154 | policy. You retain the right to request details of any personal 155 | information we hold about you.{" "} 156 |
157 |158 | If we receive personal information about you from a third party, 159 | we will protect it as set out in this privacy policy. If you are a 160 | third party providing personal information about somebody else, 161 | you represent and warrant that you have such person’s consent to 162 | provide the personal information to us.{" "} 163 |
164 |165 | If you have previously agreed to us using your personal 166 | information for direct marketing purposes, you may change your 167 | mind at any time. We will provide you with the ability to 168 | unsubscribe from our email-database or opt out of communications. 169 | Please be aware we may need to request specific information from 170 | you to help us confirm your identity.{" "} 171 |
172 |173 | If you believe that any information we hold about you is 174 | inaccurate, out of date, incomplete, irrelevant, or misleading, 175 | please contact us using the details provided in this privacy 176 | policy. We will take reasonable steps to correct any information 177 | found to be inaccurate, incomplete, misleading, or out of date.{" "} 178 |
179 |180 | If you believe that we have breached a relevant data protection 181 | law and wish to make a complaint, please contact us using the 182 | details below and provide us with full details of the alleged 183 | breach. We will promptly investigate your complaint and respond to 184 | you, in writing, setting out the outcome of our investigation and 185 | the steps we will take to deal with your complaint. You also have 186 | the right to contact a regulatory body or data protection 187 | authority in relation to your complaint.{" "} 188 |
189 |191 | We use “cookies” to collect information about you and 192 | your activity across our site. A cookie is a small piece of data 193 | that our website stores on your computer, and accesses each time 194 | you visit, so we can understand how you use our site. This helps 195 | us serve you content based on preferences you have specified.{" "} 196 |
197 |199 | Our website may link to external sites that are not operated by 200 | us. Please be aware that we have no control over the content and 201 | policies of those sites, and cannot accept responsibility or 202 | liability for their respective privacy practices.{" "} 203 |
204 |206 | At our discretion, we may change our privacy policy to reflect 207 | updates to our business processes, current acceptable practices, 208 | or legislative or regulatory changes. If we decide to change this 209 | privacy policy, we will post the changes here at the same link by 210 | which you are accessing this privacy policy.{" "} 211 |
212 |213 | If required by law, we will get your permission or give you the 214 | opportunity to opt in to or opt out of, as applicable, any new 215 | uses of your personal information.{" "} 216 |
217 |219 | For any questions or concerns regarding your privacy, you may 220 | contact us using the following details:{" "} 221 |
222 |
223 | GitFluence
224 |
225 | contact@gitfluence.com{" "}
226 |