# # Guide

The goal of CrowdFunding is Online Fund raising platform that allows you to create campaigns.

## # Technologies Used

This system uses multiple technologies to give the best possible experience.

- PHP 8.0 with Laravel Framework
- MySQL 5.7+
- jQuery
- Ajax
- Boostrap
- Turbo

## # Installation Guide

We tried our best to make the installation of the system as easy as possible. System Requirements It is assumed that you have primary knowledge Laravel installation knowledge since this application is built on Laravel.

### # System Requirement

It is assumed that you have primary knowledge Laravel and JS application installation knowledge since this application is built on Laravel with JS.

You can read about laravel Requirements here
(opens new window)

You need update below variables in php.ini file if you want to send bigger files (Optional).

upload_max_filesize = 50M

max_file_uploads = 50

post_max_size = 100M

### # Setup CrowdFunding System

If you have purchased the CrowdFunding system then you will be able to find the zip named `dist.zip`.

If you want to setup `CrowdFunding` into your local environment then you can take help from here.

Now if you want to setup CrowdFunding on your server then you can directly copy the dist.zip folder to your web root directory on server and the following steps:

### # 1. Copy files to web server

Upload dist.zip to your web server's root (public_html) and extract it there. If you are installing it on subdomain then do extract it in your subdomain's root folder.

### # 2. Setup Default DB

1. Open PHPMyAdmin on your server and do a login.

2. Click on the Databases tab.

3. Create a new database and specify a Database name of your choice and Click Create button.

4. Now on the left, select the database that you have created and click Import in the top menu

5. Under Import, choose the database SQL file from dist/database/infy_funding.sql from the extracted file from your local and click the Go button.

### # 3. Setup environment .env file

1. Open .env file from your server's root folder.

2. Update your .env file

You need to change the following information into your environment (.env) file.
Make sure your app name wrapped between Quotes ("APP NAME").

    - APP_NAME - Name of your Application/Library System
    - APP_URL - Change this URL with your server URL (including trailing path if you are putting it in sub folder or root website)
    - DB_HOST - Put your database hostname here
    - DB_PORT - Put your database port here if it does not default to 3306
    - DB_DATABASE - Change it to your database name
    - DB_USERNAME - Name of your database user
    - DB_PASSWORD - Password of your database user

You will also need to set up mail configuration and update the following variables. You can use the below video for the reference on how to setup email configuration for cPanel servers.

    - MAIL_DRIVER
    - MAIL_HOST
    - MAIL_PORT
    - MAIL_USERNAME
    - MAIL_PASSWORD
    - MAIL_ENCRYPTION
    - MAIL_FROM_ADDRESS
    - MAIL_FROM_NAME

If you want to store your files to direct your `s3` bucket then you have to use following `.env` variables. You need to change `FILESYSTEM_DRIVER` and `MEDIA_DISK` value to `s3` when you are using AWS file storage.

    - AWS_ACCESS_KEY_ID=
    - AWS_SECRET_ACCESS_KEY=
    - AWS_DEFAULT_REGION=us-east-1
    - AWS_BUCKET=
    - AWS_ENDPOINT=
    - AWS_URL=

Or you can use your choice of storage driver to store your media assets if you want. All of your attachments will be placed into that.

Set Stripe configuration in Settings, you can set it from the admin settings. Here are some links by using it you will get an idea about how to generate stripe API keys.

- You can find steps here 1
  (opens new window) or here 2
  (opens new window) to Stripe configuration.

Set PayPal configuration in Settings, you can set it form the admin settings. Here are some links by using it you will get an idea about how to generate PayPal API keys.

- You can find steps here 1
  (opens new window) or here 2 to PayPal configuration.

### # 4. Admin login

You can do admin login by accessing given URL.

`YOUR_APP_URL/login`

Admin's Login

Admin email: admin@infyfund.com

Admin password: 123456

Users' Login

User email: user@infyfund.com

User password: 123456

And you are ready to go.

## # Setup CrowdFunding into Local Environment

You can setup CrowdFunding into your local by using both zip files, but we recommend to use dist file so you have to perform minimal steps.

Here are some steps to setup CrowdFunding into your local environment :

### # 1. Install xampp/wamp (if you don't have it).

### # 2. Create folder `CrowdFunding`

- if you are using wamp then create CrowdFunding folder under you_path_to_wamp/www/
- if you are using xamp then create CrowdFunding folder under you_path_to_xamp/htdocs/

### # 3. Unzip dist zip to CrowdFunding folder

### # 4. Point the domain to the uploaded folder

You need to create virtual host first to setup CrowdFunding. You can find steps here to create virtual host.

- You can find steps here
  (opens new window) to create virtual host on `XAMPP`.
- You can find steps here
  (opens new window) to create virtual host on `WAMP`.

Point your domain or subdomain to the CrowdFunding folder.

Please note that, CrowdFunding must be installed on a primary domain or subdomain. Installing on a sub-folder will not work, for example:

        example.com/CrowdFunding (Invalid)
        localhost/CrowdFunding (Invalid) if you are putting it in sub folder or root website)
        example.com (Valid)
        local.CrowdFunding.com (Valid)
        CrowdFunding.test (Valid)

Open the link to the domain in the browser (Example: https://local.CrowdFunding.com).

## # Key Features and Concepts

Here are some Key Features and Concepts that CrowdFunding provides.

## # Landing page

It comes up with a beautiful landing page, which helps people to get information about the Campaigns, Events, News and etc. People can donate funds for campaigns from the landing page. They also can submit queries via the contact us form. Users can register for upcoming events from the landing page.

## # Admin Panel

We have created a beautiful and user attractive admin panel to manage the contents for landing page. Admin can manage all the campaigns / events / news and also able to create new user account with assigned roles/permissions. Admin can change the system settings from the admin panel, like admin can change the landing page theme, change contact information, social account details, etc.

### # Dashboard

Dashboard is more important thing in each application, as you can get quick information from there. Admin can see the total campaigns, total donations, the total number of donors, total users, etc. Here Admin can get information about Monthly Donation & Withdraw Report.

### # Campaigns

You can see lists of all campaigns that you have added to your system. Admin can manage all campaigns in the system. He can create / update / delete campaigns.

You can see the raised funds into campaign details also see the withdrawal funds from that specific campaign.

User can mark the campaign as Completed once his funds collected.

#### # Campaign Categories

Each campaign will have specific category, so users can easily search the campaign that he's looking for.

You can create separate categories as per your need and assign it to campaigns.

### # Withdraw Requests

Once the campaign completed and fund raised, users are going to withdrawal their funds to their account.

We have two methods for withdrawal, 1 : Paypal payouts, 2 : Bank Payouts.

Please note that for bank payouts users needs to provide all the bank related details and then admin is going to process the manually payouts, its not supporting automatic bank transfers, it's a manual process.

Admin can see the all the withdrawal requests and approve / deny it.

### # Events

Events will be listed to the landing page and participants can join it specific event by registering them self.

Admin can define the lists of seal for the events and regarding that participants can join, if the seal is not available participant can not join the event.

You can manage all events and events registration. You can see list of all registrations. Admin can create a new events. Also he can update or delete this events.

#### # Event Categories

Event Categories every event can be categorised into a different category based on its purpose. so it can be easy to find the right events.

### # News

This is the important module for your regular users.

Users can get the latest updates or latest news from here, admin will add the latest news of the system here by adding title, image and the long description.

#### # News Categories

News Categories every news can be categorised into a different category based on its purpose.

#### # News Tags

Every news will have some tags, that will help users to search the news easily.

That will also help in the SEO too.

### # Users

Admin can add new users for specific roles wise by using this module. Admin can directly verify any user from here. Also, he can change users' status.

### # Role & Permission

We are supporting the roles and permission features. so, You can create different kinds of roles as per your need. you can create a role by selecting different permissions whatever you want to select for the given role.

### # Pages

You can manage the page from here, and you can add pages for front content.

### # Inquiries

The website's contact us form submission is converted to an inquiry which portal admin can see in the admin panel and respond them.

### # Languages

By using this module you can add a new language. Also, you can change the word text from here.

### # CMS Menu

Here you can manage all front contents including single header text. Yeah, it's all configurable, so you can add/edit any text of the landing page by using this.

In CMS Menu we are providing three different home page themes. You can change the home page theme change from the settings.

### # Success Stories

This module allows you to add success stories. which you have achieved.

### # FAQs

Manage your website FAQs in this module to answer users’ frequently asked questions.

### # Settings

Settings will include some other set of modules.

- General Setting
- Contact Information
- Social Settings
- Homepage
- Credentials

## # User Panel

### # Dashboard

Users can see their own total campaigns, total donations, the total number of donors, etc.

Here Users can get information about their own Monthly Donations & Withdraw reports.

### #Campaigns

Admin / Users can create different kind of campaign with different categories for raising the funds.

Admin will get commission on each fund transfer, he can set this amount or percentage in system setting.

Users can see lists of their own campaigns that you have added to in the system.

Users can manage their own campaigns in the system. He can create / update / delete own campaigns.

### # Withdraw Request

Users can raise the withdrawal request per campaign, once the withdrawal request raised for the specific campaign, that campaign will be no longer visible to the landing page and user can not change his status to active until the withdrawal request action will be taken

Users can send withdrawal requests to the admin. Users can obtain information about how many requests are sent, how many requests are approved, etc.