Installation
Installation is not difficult, but there are many steps. This is a brief explanation of what needs to be done:
- Install
git
- Download the code from GitHub using
git
- Install
node.js
(Node), the runtime environment the application will need to work. - Configure the Node Package Manager (
npm
) to automatically use the correct version of Node for our application. - Use
npm
to install TypeScript, the language the application is written in. - Install other supporting software such as the database.
- Configure the application
- Start the application
These steps are explained in more detail in the sections that follow.
Prerequisites
In this section we'll explain how to set up all the prerequisite software packages to get you up and running.
Install git
The easiest way to get the latest copies of our code is to install the git
package on your computer.
Follow the setup guide for git
on official git docs. Basic git
knowledge is required for open source contribution so make sure you're comfortable with it. Here's a good tutorial to get started with git
and github
.
Setting up this repository
First you need a local copy of talawa-admin
. Run the following command in the directory of choice on your local system.
-
On your computer, navigate to the folder where you want to setup the repository.
-
Open a
cmd
(Windows) orterminal
(Linux or MacOS) session in this folder.- An easy way to do this is to right-click and choose appropriate option based on your OS.
-
For Our Open Source Contributor Software Developers:
-
Next, we'll fork and clone the
talawa-admin
repository. -
In your web browser, navigate to https://github.com/PalisadoesFoundation/talawa-admin/ and click on the
fork
button. It is placed on the right corner opposite the repository namePalisadoesFoundation/talawa-admin
. -
You should now see
talawa-admin
under your repositories. It will be marked as forked fromPalisadoesFoundation/talawa-admin
-
Clone the repository to your local computer (replacing the values in
{{}}
):$ git clone https://github.com/{{YOUR GITHUB USERNAME}}/talawa-admin.git
cd talawa-admin
git checkout develop- Note: Make sure to check out the
develop
branch
- Note: Make sure to check out the
-
You now have a local copy of the code files.
-
For more detailed instructions on contributing code, please review the following documents in the root directory of the code:
- CONTRIBUTING.md
- CODE_OF_CONDUCT.md
- CODE_STYLE.md
- DOCUMENTATION.md
- INSTALLATION.md
- ISSUE_GUIDELINES.md
- PR_GUIDELINES.md
-
-
Talawa Administrators:
-
Clone the repository to your local computer using this command:
$ git clone https://github.com/PalisadoesFoundation/talawa-admin.git
-
Install node.js
Best way to install and manage node.js
is making use of node version managers. We recommend using fnm
, which will be described in more detail later.
Follow these steps to install the node.js
packages in Windows, Linux and MacOS.
- For Windows:
- first install
node.js
from their website at https://nodejs.org- When installing, don't click the option to install the
necessary tools
. These are not needed in our case.
- When installing, don't click the option to install the
- then install fnm. Please read all the steps in this section first.
- All the commands listed on this page will need to be run in a Windows terminal session in the
talawa-admin
directory. - Install
fnm
using thewinget
option listed on the page. - Setup
fnm
to automatically set the version ofnode.js
to the version required for the repository using these steps:- First, refer to the
fnm
web page's section onShell Setup
recommendations. - Open a
Windows PowerShell
terminal window - Run the recommended
Windows PowerShell
command to opennotepad
. - Paste the recommended string into
notepad
- Save the document.
- Exit
notepad
- Exit PowerShell
- This will ensure that you are always using the correct version of
node.js
- First, refer to the
- All the commands listed on this page will need to be run in a Windows terminal session in the
- first install
- For Linux and MacOS, use the terminal window.
- install
node.js
- then install
fnm
- Refer to the installation page's section on the
Shell Setup
recommendations. - Run the respective recommended commands to setup your node environment
- This will ensure that you are always using the correct version of
node.js
- Refer to the installation page's section on the
- install
Install TypeScript
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript. It adds optional types, classes, and modules to JavaScript, and supports tools for large-scale JavaScript applications.
To install TypeScript, you can use the npm
command which comes with node.js
:
npm install -g typescript
This command installs TypeScript globally on your system so that it can be accessed from any project.
Install Required Packages
Run the following command to install the packages and dependencies required by the app:
npm install
The prerequisites are now installed. The next step will be to get the app up and running.
Installation using Docker
Docker is used to build, deploy, and manage applications within isolated, lightweight containers, effectively packaging an application with all its dependencies so it can run consistently across different environments, allowing for faster development, testing, and deployment of software.
We use it to simplify installation
Prerequisites
Follow these steps to install Docker on your system
You now need to setup the environment. This follows next.
Development Setup
If you prefer to use Docker, you can install the app using the following command:
-
Create a
.env
file as described in the Configuration section -
Build and Run the Docker Image:
Run the following command to run the Docker image:
docker-compose -f docker/docker-compose.dev.yaml --env-file .env up
-
To stop the container run the following command:
docker-compose -f docker/docker-compose.dev.yaml down
The application will be accessible at http://localhost:4321
Production Setup
If you prefer to use Docker, you can install the app using the following command:
-
Create a
.env
file as described in the Configuration section -
Configure
nginx.conf
file located atconfig/docker/setup
. Modify it to fit your preferences before running the application. -
Build and Run the Docker Image:
Run the following command to run the Docker image:
docker-compose -f docker/docker-compose.prod.yaml --env-file .env up
-
To stop the container run the following command:
docker-compose -f docker/docker-compose.prod.yaml down
The application will be accessible at http://localhost:4321
Configuration
It's important to configure Talawa-Admin. Here's how to do it.
You can use our interactive setup script for the configuration. Use the following command for the same.
npm run setup
All the options in "setup" can be done manually as well and here's how to do it. - Creating .env file
The .env Configuration File
A file named .env is required in the root directory of talawa-admin for storing environment variables used at runtime. It is not a part of the repo and you will have to create it. For a sample of .env
file there is a file named .env.example
in the root directory. Create a new .env
file by copying the contents of the .env.example
into .env
file. Use this command:
cp .env.example .env
.env Parameters
This .env
file must be populated with the following environment variables for talawa-admin
to work:
Variable | Description |
---|---|
PORT | Custom port for Talawa-Admin development purposes |
REACT_APP_TALAWA_URL | URL endpoint for talawa-api graphql service |
REACT_APP_BACKEND_WEBSOCKET_URL | URL endpoint for websocket end point |
REACT_APP_USE_RECAPTCHA | Whether you want to use reCAPTCHA or not |
REACT_APP_RECAPTCHA_SITE_KEY | Site key for authentication using reCAPTCHA |
Setting up PORT in .env file
Add a custom port number for Talawa-Admin development purposes to the variable named PORT
in the .env
file.
Setting up REACT_APP_TALAWA_URL in .env file
Add the endpoint for accessing talawa-api graphql service to the variable named REACT_APP_TALAWA_URL
in the .env
file.
REACT_APP_TALAWA_URL="http://API-IP-ADRESS:4000/graphql"
If you are a software developer working on your local system, then the URL would be:
REACT_APP_TALAWA_URL="http://localhost:4000/graphql"
If you are trying to access Talawa Admin from a remote host with the API URL containing "localhost", You will have to change the API URL to
REACT_APP_TALAWA_URL="http://YOUR-REMOTE-ADDRESS:4000/graphql"
Setting up REACT_APP_BACKEND_WEBSOCKET_URL in .env file
The endpoint for accessing talawa-api WebSocket graphql service for handling subscriptions is automatically added to the variable named REACT_APP_BACKEND_WEBSOCKET_URL
in the .env
file.
REACT_APP_BACKEND_WEBSOCKET_URL="ws://API-IP-ADRESS:4000/graphql"
If you are a software developer working on your local system, then the URL would be:
REACT_APP_BACKEND_WEBSOCKET_URL="ws://localhost:4000/graphql"
If you are trying to access Talawa Admin from a remote host with the API URL containing "localhost", You will have to change the API URL to
REACT_APP_BACKEND_WEBSOCKET_URL="ws://YOUR-REMOTE-ADDRESS:4000/graphql"
For additional details, please refer the How to Access the Talawa-API URL
section in the INSTALLATION.md file found in the Talawa-API repo.
Setting up REACT_APP_RECAPTCHA_SITE_KEY in .env file
This is an optional parameter.
You may not want to setup reCAPTCHA since the project will still work. Moreover, it is recommended to not set it up in development environment.
If you want to setup Google reCAPTCHA now, you may refer to the RECAPTCHA
section in the INSTALLATION.md file found in Talawa-API repo.
Talawa-admin
needs the reCAPTCHA site key
for the reCAPTCHA
service you set up during talawa-api
installation as shown in this screenshot:
Copy/paste this reCAPTCHA site key
to the variable named REACT_APP_RECAPTCHA_SITE_KEY
in .env
file.
REACT_APP_RECAPTCHA_SITE_KEY="this_is_the_recaptcha_key"
Setting up Compiletime and Runtime logs
Set the ALLOW_LOGS
to "YES" if you want warnings , info and error messages in your console or leave it blank if you dont need them or want to keep the console clean
First Time SignIn as Admin
After setting up talawa-admin
and talawa-api
, your PostgreSQL database will have only one user: Administrator.
To sign in as an Admin, you need to register a user and then manually grant them Administrator privileges.
📌 Steps to Sign In as an Administrator
1️⃣ Register as an Admin
You can register using the frontend.
Optional: If needed, insert an image showing the registration page here:
2️⃣ Grant Administrator Role to the Registered User
🔹 Note: Since the Super Admin is not yet configured, we will use the GraphQL frontend for this. 🔹 Note: Replace "user-id" with the actual ID of the registered user and org-id with organization ID wherever necessary. You can obtain this form the postgres database via cloudbeaver.
-
Open GraphiQL in your browser:
-
Sign in as Administrator
- Use the following GraphQL query to get an authentication token for authorization in later queries:
mutation {
signIn(
input: { emailAddress: "administrator@email.com", password: "password" }
) {
authenticationToken
user {
id
name
}
}
}
-
Make the registered user an Administrator
- Use the following GraphQL mutation to assign administrator role to user:
mutation {
updateUser(input: { id: "user-id", role: administrator }) {
id
name
}
} -
Next create an organization
- Use the following GraphQL mutation to create an organization:
mutation {
createOrganization(
input: {
addressLine1: "Los Angeles"
addressLine2: "USA"
city: "Los Angeles"
countryCode: in
description: "testing"
name: "Test Org 7"
postalCode: "876876"
state: "California"
}
) {
id
}
} -
Make user an administrator of the organization
- Use the following GraphQL mutation to assign administrator role to user:
createOrganizationMembership(
input: {
memberId: "user-id"
organizationId: "org-id"
role: administrator
}
) {
id
name
addressLine1
createdAt
members(first: 5) {
pageInfo {
hasNextPage
startCursor
}
edges {
cursor
node {
id
name
}
}
}
}
}
Now sign successfully in with your registered ADMIN.