#Project Overview
This project is to create a website + Chabot that work with slack and eventually other chat platforms. The idea is to make a virtual teaching assistant that can help manage questions that I receive. Once the basic system works I want to add features that turn answering questions into a game that students earn points for.
There is a training program for people to participate, so that we can all have the same core skill set and know how to work on the project. This training is similar to what you might receive when being on boarded to a new company.
The training program has 2 parts:
-
FAQ project introduction videos 1-4 now; however, there will be a total of about 10 - 12 videos by the time I’m done with making the training program. Videos 5-10 will be about blade templates, routes, controllers, forms, and more testing.
The basic practices of this project are that you will take a task that is fairly small and complete the feature, testing, and everything needed to include that feature in the project. Once we get going we will be using a task board.
There are a few different jobs that we will need eventually. For example, we may want to have someone to design the visual of the feature and / or write specifications. Eventually we need people to work on the hosting on Heroku or AWS. We are also going to work on some data science things this summer. I plan on converting the current FAQ project to use a graph database before launching it in the fall to use it in 5 classes with around 160 students.
- Professional experience on a project that will be used by a large number of people.
- Students Developers will be featured in a "Hall of Fame" that hylights their contributions
- This is a chance to work on small pieces of a project and to gain experience using current industry standard processes and technologies.
- You help to build something that will last and can be used as a portfolio project that clearly identifies your contributions to the project
- You are able to work on a project with a team of people and make important contributions
- Students always ask me about projects and I don't know what to do, so this is a streamlined way to help more students.
- I would like to upgrade the curriculum to focus more on data science and using Laravel will make developing a high quality application that will generate data for other classes
- I want to use this project to showcase what our students are able to do for employers, so we get name brand recognition by local employers
- I want investigate how technology can improve the educational experience and effectiveness for students.
- I feel that this is a safe way for students to get experience
- I feel this is way for students to demonstrate their abilities and hylight their work in a manageable way.
- You start of as a student trainee and must demonstrate completion of the FAQ tutorial and the Laravel basics through the screencast, if you know Laravel you can start with the FAQ project tutorial series
- Once you complete the tutorial you can be raised to a student developer and begin completing features
- Student Developers can be promoted to other roles in the future and specialize in areas such as devops, data science, mobile, etc...
- git clone https://github.com/NJIT-WIS/faq.git
- CD into FAQ and run composer install
- cp .env.example to .env
- run: php artisan key:generate
- setup database / with sqlite or other https://laravel.com/docs/5.6/database
- Run: php artisan migrate
- Run: unit tests: phpunit
- Run: seeds php artisan migrate:refresh --seed
You need to complete upto video 20 where it has testing to begin this project, if you don't have previous experience with Laravel.
https://laracasts.com/series/laravel-from-scratch-2017
https://www.youtube.com/playlist?list=PLytMRtonvCRUjrQqKaQeOd2KoYq_ifcpD
https://laravel.com/docs/5.6/eloquent
https://laravel.com/docs/5.6/database
https://laravel.com/docs/5.6/seeding
https://laravel.com/docs/5.6/testing
https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow
https://www.jetbrains.com/phpstorm/
http://agiledata.org/essays/tdd.html
https://code.visualstudio.com/
##Technology Instructions
The NJIT FAQBot is a student driven project that has been organized by Professor Williams. The focus of the project is to give students a hands on experience collaboratively working in an agile team environment that is similarly recognized in large tech companies.
The idea behind the NJIT FAQBot is to create a smart QA forum to help students find answers to their questions more efficiently.
Configure the entire stack by following this Docker tutorial.
- Laravel (Basic ToDo, FAQBot Project)
- Vue.JS (Tutorial with Laravel)
- Botman (Explanation Lecture)
- Dialogflow (Documentation)
- Elastic Search (Documentation)
- PostgreSQL
- Nginx - Alpine
- Redis
- Docker (project specific docker info)
- Project Docker Video (Our Project Using Docker)
Intergrations
- Stack overflow (Documentation)
This project is engineered and maintained by using the Test Driven Development. Each feature implemented should follow with a pull request on the designated branch (github workflow)
Add the following to .env:
DIALOGFLOW_API_KEY=<your_dialogflow_api_key> SCOUT_ELASTIC_HOST=<your_elastic_search_node_ip:port>
Slack Installation:
- Install slack driver php artisan botman:install-driver slack
- Download ngrok: https://ngrok.com/ Open CMD Navigate to folder that ngrok.exe is, type "ngrok http 8000" ngrok will give you a new url next to the first "Forwarding" section
- Create Slack Bot: https://api.slack.com/apps Create New App Button top right of screen Select a name and workspace for bot
- Select Interactive Components on sidebar under the Request URL enter the forwarding address that ngrok provided add to the end of the address /botman/tinker Ex: "http://3bfc36f2.ngrok.io/botman/tinker" Save Changes
- Select Event Subscriptions under Request URL type in the same forwarding address as you did in the previous step but remove the tinker Ex: "http://3bfc36f2.ngrok.io/botman/" Save Changes
- In the same window as the last step Subscribe to Workspace Events: meessage.im for messages
- Select Bot Users Choose a name and default username. Save Changes
- Under OAuth & Permissions record the token under Bot User OAuth Access Token Place this token in .env file as SLACK_TOKEN=<ACCESS_TOKEN>
- Install App under Setting Install the app, Authorize
While BotMan itself is framework agnostic, BotMan is also available as a bundle with the great Laravel PHP framework. This bundled version is called BotMan Studio and makes your chatbot development experience even better. By providing testing tools, an out of the box web driver implementation and additional tools like an enhanced CLI with driver installation, class generation and configuration support, it speeds up the development significantly.
You can find the BotMan and BotMan Studio documentation at http://botman.io.
If you discover a security vulnerability within BotMan or BotMan Studio, please send an e-mail to Marcel Pociot at [email protected]. All security vulnerabilities will be promptly addressed.
BotMan is free software distributed under the terms of the MIT license.