Skip to content

Commit

Permalink
Start of open source
Browse files Browse the repository at this point in the history
  • Loading branch information
maidul98 committed Nov 17, 2022
0 parents commit 8d00c5c
Show file tree
Hide file tree
Showing 29 changed files with 861 additions and 0 deletions.
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
node_modules
.env
.env.infisical
.DS_STORE

*~
*.swn
*.swp
*.swo
93 changes: 93 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<p align="center">
<img width="300" src="/img/logoname-black.svg#gh-light-mode-only">
<img width="300" src="/img/logoname-white.svg#gh-dark-mode-only">
</p>

---

# Infisical

[Infisical](https://infisical.com/) is a simple, end-to-end encrypted (E2EE) platform that enables dev teams to sync and manage their environment variables.

Infisical enables dev teams to pull and inject environment variables directly from the platform into their local processes just by modifying their start/dev scripts.

It also supports git-like pull/push commands to sync and share .env files manually via CLI if needed.

![alt text](/img/infisical_github_repo.png)

## Usage

For a quick tutorial, check out our getting started video [here](https://www.youtube.com/watch?v=fgNTyZdHiQQ).

Head over to [Infisical](https://infisical.com/) to make an account and create a project for your app. Once you've made an account, populate the project with your environment variables and invite your team.

Once you’ve done that, return here to pull and inject secrets from the project to your local process/project.

### Step 1: Modify your dev script

Infisical works with leading JS tools and frameworks to pull and inject secrets into your local environment during development. This includes Express, Fastify, Koa (+/- nodemon) as well as Create-React-App, Next.js, NestJS, and Gatsby.

Navigate to your root project folder; feel free to delete your local .env file as it won’t be needed anymore. Now, prepend the Infisical command before whatever dev command you're using in your package.json dev script. This should take the following form where the environment argument is the environment (options are dev, staging, and prod) that you wish to pull from:

```jsx
"scripts": {
...
"dev": "npx infisical [environment] [start/dev command]"
}
```

Examples:

**Express, Fastify, Koa (+ nodemon)**

```jsx
"scripts": {
...
"dev": "npx infisical dev nodemon index.js"
}
```

**Next.js**

```jsx
"scripts": {
...
"dev": "npx infisical dev next dev"
}
```

**NestJS**

```jsx
"scripts": {
...
"start:dev": "npx infisical dev nest start --watch"
}
```

**Gatsby**

```jsx
"scripts": {
...
"dev": "npx infisical dev gatsby develop"
}
```

### Step 2: Run your dev process

Next, start your dev process. If it’s your first time, then follow the prompt to log in and connect to the project:

```
npm run dev
```

Voila, you’re now automatically pulling and injecting secrets into your local environment every time you run your dev script!

Feel free to check out the full usage documentation and list of commands [here](https://infisical.com/docs/gettingStarted).

## How it Works

Infisical uses end-to-end encryption to securely store and share secrets. It uses secure remote password (SRP) to handle authentication and public-key cryptography for secret sharing and syncing; your secrets are symmetrically encrypted at rest by keys decryptable-only by intended parties in your team. Put simply, we've put measures in place so that secrets remain your-eyes-only - all while making minimal user-experience trade-offs.

For a fuller discussion on how it works, head to: [Infisical](https://infisical.com)
31 changes: 31 additions & 0 deletions docs/CLI.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
---
title: "Infisical CLI"
description: "Learn about each supported command and its flags"
---

## Background

Infisical ships with multiple commands to assist with ongoing project needs; we list these commands and give context for them below.

<Card title="Install the CLI" icon="lightbulb" href="/installCLI">
If you haven't already, install the Infisical CLI
</Card>

Note on arguments:

- [environment]: the intended environment for the given command being one of dev, staging, or prod.
- [projectId]: the project identifier found on the dashboard.

## Commands

- `login` used to set the logged in user. Your credentials are saved securely in your system key ring. Note: only one user can be logged in at a time. To change the logged in user, run the command again and overwrite the previous login.
- `init` used to link your infisical.com project to your local project. Run this command ideally at the root of your local project. You will have to run this command for each new project you create locally.
- `run` used to inject your secrets as environment variables into your application process. Example `infisical run --stage=prod -- npm run start`
- `---projectId` flag is used to link your local project to a Infisical.com project. Use this option only when you are injecting via Infisical Token instead of your login.
- `---stage` flag is used to set the environment from which your secrets are pulled from. By default, secrets from your project are pulled from the `dev`. To change to for example prod, add `--stage=prod`

### Global flags
These are flags you can add to any command

- `--domain` you may change this if you are self hosting Infisical. By default, the CLI points to Infisical.com backend. To point to your own backend, make sure to set this flag for each command you run. Example `infisical login --domain=https://mybackend.com`
- `--debug` use this flag when you want to see more logs related to the error you are receiving. By default debug logs are hidden. Example `infisical run --debug <your command>`
24 changes: 24 additions & 0 deletions docs/Heroku.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: "Heroku"
description: "With this integration, you can automatically sync your secrets to Heroku as soon as you update secrets in Infisical."
---

## Instructions

### Step 1: Open the integrations csonsole

Open the Infisical Dashboard. Choose the project in which you want to set up the intergation. Go to the integrations tab in the left sidebar.

### Step 2: Authenticate with Heroku

Click on Heroku in the list of available integrations. Log in if asked by Heroku and provide the necessary permissions to Infisical. You will afterwards be redirected back to the integrations page.

Note: during an integration with Heroku, for security reasons, it is impossible to maintain end-to-end encryption. In theory, this lets Infisical decrypt yor environment variables. In practice, we can assure you that this will never be done, and it allows us to protect your secrets from bad actors online. The core Infisical service will always stay end-to-end encrypted. With any questions, reach out [email protected].

### Step 3: Start integration

Once the integration is set up, choose a Heroku App that you want to sync the secrets to, and the Infisical project environment that you would to sync the secrets from. Click on the "Start Integration" button.

### Step 4: You're good to go!

The integration should now show status 'In Sync'. Every time you edit the secrets, they will be automatically pushed to Heroku. If you want to update anything in your integration, you will have to delete the current one and create a new one.
135 changes: 135 additions & 0 deletions docs/codeOfConduct.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
---
title: "Code of Conduct"
description: ""
---

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our
community include:

- Demonstrating empathy and kindness toward other people
- Being respectful of differing opinions, viewpoints, and experiences
- Giving and gracefully accepting constructive feedback
- Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
- Focusing on what is best not just for us as individuals, but for the overall
community

Examples of unacceptable behavior include:

- The use of sexualized language or imagery, and sexual attention or advances of
any kind
- Trolling, insulting or derogatory comments, and personal or political attacks
- Public or private harassment
- Publishing others' private information, such as a physical or email address,
without their explicit permission
- Other conduct which could reasonably be considered inappropriate in a
professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.

Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.

## Enforcement Guidelines

Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:

### 1. Correction

**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.

**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.

### 2. Warning

**Community Impact**: A violation through a single incident or series of
actions.

**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.

### 3. Temporary Ban

**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.

**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.

### 4. Permanent Ban

**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.

**Consequence**: A permanent ban from any sort of public interaction within the
community.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].

Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][mozilla coc].

For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][faq]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].

[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[mozilla coc]: https://github.com/mozilla/diversity
[faq]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations
35 changes: 35 additions & 0 deletions docs/contributing.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
---
title: "Overview"
description: "We welcome any contributions to Infisical, big or small."
---

## Community

It's the early days of Infisical and we're working hard to build an awesome, inclusive community. In order to grow this, all community members must adhere to our Code of conduct.

## Bugs and issues

Bug reports help make Infisical a better experience for everyone. When you report a bug, a template will be created automatically containing information we'd like to know.

Before raising a new issue, please search existing ones to make sure you're not creating a duplicate.

<Info>
If the issue is related to security, please email us directly at
[email protected].
</Info>

## Deciding what to work on

You can start by browsing through our list of issues or adding your own that improves on the platform experience. Once you've decided on an issue, leave a comment and wait to get approved; this helps avoid multiple people working on the same issue.

If you're ever in doubt about whether or not a proposed feature aligns with Infisical as a whole, feel free to raise an issue about it and we'll get back to you promptly.

## Writing and submitting code

Anyone can contribute code to Infisical. To get started, check out the local development guide, make your changes, and submit a pull request to the main repository.

## Licensing

Most of Infisical's code is under the MIT license, though some paid feature restrictions are covered by a proprietary license.

Any third party components incorporated into our code are licensed under the original license provided by the applicable component owner.
46 changes: 46 additions & 0 deletions docs/developing.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
title: "Developing"
description: "This guide will help you set up and run Infisical in development mode."
---

## Clone the repo

```bash
# change location to the path you want Infisical to be installed
cd ~

# clone the repo and cd to Infisical dir
git clone https://github.com/Infisical/infisical
cd infisical
```

## Set up environment variables

Tweak the `.env` according to your preferences. Refer to the available [environment variables](envars).

```bash
cp .env.example .env
```

## Docker for development

```bash
# build and start the services
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up --build
```

Then browse http://localhost:3000

```bash
# To stop environment use Control+C (on Mac) CTRL+C (on Win) or
docker-compose down
# start services
docker-compose up
```

The docker-compose environment consists of:

- frontend
- backend
- mongo
- mongo-express
Loading

0 comments on commit 8d00c5c

Please sign in to comment.