Thank you for purchasing my script. If you have any questions that are beyond the scope of this help file, feel free to email me.
Assess Hour is a single page(SPA) web application / platform for online Assessments, tests, surveys, quizzes and exams. It's best suited for the online evaluations and skills assessment for the educational institutions, companies, corporations and agencies. You can start your own SaaS businees with Assess Hour, also your customers can earn money by selling their own assessments.
Visual Studio Code.
Database provider software (SQL Server / MySql / Sqlite / PostgreSql / Oracle).
Open AssessHourApi project from Source Code folder on Visual studio code.On appsettings.json file you will find five connection strings for five different database connectivity. Replace the connection string by your one.
"ConnectionStrings": { "ApiConnStringMssql": "data source=Sangib-PC;initial catalog=assesshourdb; persist security info=True;Integrated Security=SSPI;", "ApiConnStringMysql": "server=localhost;port=3306;database=assesshourdb;user=root;", "ApiConnStringOracle": "Data Source=(DESCRIPTION=(ADDRESS_LIST= (ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))) (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=orclpdb)));User Id=root;Password=root;", "ApiConnStringSqlite": "Data Source=assesshourdb.db;", "ApiConnStringPostgreSql": "Server=127.0.0.1;Port=5432;Database=assesshourdb; User Id=postgres;Password=postgres;" }
Then open Startup.cs file, On ConfigureServices method you will see five AppDbContextPool for five Connection Strings that already have on appsettings.json file. Un-Comment your required one and keep other four as commented.Have a look to the below code.I only un-comment the Mysql portion because i used Mysql DB here.
public void ConfigureServices(IServiceCollection services) { //Sql Server Connection String /* services.AddDbContextPool<AppDbContext>(opt => opt.UseSqlServer (Configuration.GetConnectionString("ApiConnStringMssql"))); */ //Mysql Connection String services.AddDbContextPool<AppDbContext>(opt=>opt.UseMySql (Configuration.GetConnectionString("ApiConnStringMysql"))); //Sqlite Connection String /* services.AddDbContextPool<AppDbContext>(opt=>opt.UseSqlite (Configuration.GetConnectionString("ApiConnStringSqlite"))); */ //PostgreSql Connection String /* services.AddDbContextPool<AppDbContext>(opt=>opt.UseNpgsql (Configuration.GetConnectionString("ApiConnStringPostgreSql"))); */ //Oracle Connection String /* services.AddDbContextPool<AppDbContext>(opt=>opt.UseOracle (Configuration.GetConnectionString("ApiConnStringOracle"))); */
Now Open terminal on VS Code and write below commands
->dotnet tool install --global dotnet-ef
->dotnet ef migrations add MigrationName
->dotnet ef database update
After successful build a folder named Migrations should create on project structure and a database named assesshourdb should create with seed data to your MySQL server (if you use MSSQL then you should check to Sql Server and so on for other databases). Now execute "dotnet run" if you want to run this Api project locally and you should see that your API listening at http://localhost:5003/.
Open AssessHourClient from Source Code folder on Visual Studio Code and on vs code terminal execute "npm run serve".
After doing above settings your client project will be running at http://localhost:8080
Assuming that you run both api and client projects by following previous steps. Now you just need to open config.js (/assesshourclient/public/config.js) from Client project and set hostname as http://localhost:5003 because our api is running here and you need to link with api from client.
export default{ hostname:'http://localhost:5003' }
Here is some resourses so that you can find more detail about above installations-
Assuming you are going to use https://assesshour.com as Site name for Client. Now on appsettings.json file move to clientUrl and you can see https://assesshour.com set as clientLive and now publish by executing ( dotnet publish ) on terminal
Now open a new site on IIS with Site name, Physical path, IP address, Port and Host name. Copy the contents of publish folder to the physical path which you created. Now assuming that you set the Host name as api.assesshour.com, copy that name and store somewhere because we need that name just a bit later.
Open Client project . Here you will find a config.js file and set that name (api.assesshour.com) on hostname to config.js file.
export default{ hostname:'https://api.assesshour.com' }
Now execute ( npm build ) on terminal and you need to copy the contents of dist folder to a physical path on server and open another site with Host name as assesshour.com.
Assuming you are going to use https://assesshour.com as Site name for Client. Now on appsettings.json file move to clientUrl and you can see https://assesshour.com set as clientLive and now publish by executing ( dotnet publish ) on terminal
-> sudo mkdir /var/www/AssessHour.Api
Now it's time to configure nginx, open a config file,
-> sudo nano /etc/nginx/sites-available/assessHourApi
Place the below contents and save that file.
server { listen 80; server_name api.assesshour.com; location / { proxy_pass http://localhost:5003; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection keep-alive; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
-> sudo ln -s /etc/nginx/sites-available/assessHourApi /etc/nginx/sites-enabled/assessHourApi
[Unit] Description=Api for AssessHour client App [Service] WorkingDirectory=/var/www/AssessHour.Api/publish ExecStart=/usr/bin/dotnet /var/www/AssessHour.Api/publish/QuizplusApi.dll Restart=always # Restart service after 10 seconds if the dotnet service crashes: RestartSec=10 KillSignal=SIGINT SyslogIdentifier=AssessHour.Api User=ubuntu-user Environment=ASPNETCORE_ENVIRONMENT=Production Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false Environment=ASPNETCORE_URLS=http://localhost:5003 [Install] WantedBy=multi-user.target
Now, Open Client project and set that 'https://api.assesshour.com' on hostname to config.js file and execute ( npm build ) on terminal, you will get a dist folder
export default{ hostname:'https://api.assesshour.com' }
Now you will need to create a directory named AssessHour.Client on your Linux server. Execute below command on your linux terminal to create that directory then copy the contents of dist folder to this (/var/www/AssessHour.Client) path.
-> sudo mkdir /var/www/AssessHour.Client
Next, open a config file,
-> sudo nano /etc/nginx/sites-available/assessHourClient
Place the below contents and save that file.
server { listen 80; server_name assesshour.com; charset utf-8; root /var/www/AssessHour.Client/dist; index index.html; #Always serve index.html for any request location / { root /var/www/AssessHour.Client/dist; try_files $uri /index.html; } error_log /var/log/nginx/vue-app-error.log; access_log /var/log/nginx/vue-app-access.log; }
-> sudo ln -s /etc/nginx/sites-available/assessHourClient /etc/nginx/sites-enabled/assessHourClient
For Super Admin, Username:superAdmin@assessHour.com Password:abcd1234
To find more detail you can browse this link (https://stripe.com/docs/testing)
Super Admin user has below menus
we will discuss briefly each of the menus.
In Super Admin Dashboard, application status will show by different charts & data. Charts are based on different data like
Here you find a list of all menus of this App. To add a new menu you have to fill below fields
You will find three roles (Super Admin,Admin & Student) here. These roles are restricted to modify and delete because these are used for many configuration issues.
Anyway you can assign menus for a role from actions.
You will find all admin users here with there transaction detail, plan, plan interval, payment mode & others. Also you can manage offline transactions from here. You can add new users from here with transaction details.
All faqs are here. You can add new faq from here also can modify exting faqs. Those faqs will viewed by other roles users.
All requests and queries which input come from landing page will be viewed here.
All transactions of admins are here. You can see all possible data which are generated by customers when they purchase any of your subscription plan.
You can see all subscription plans from here, can modify, delete & add new one from here by filling below fields
Total app settings including site logo, site favicon, site title, welcome message, copyright text, allow welcome email, allow FAQ, Exam Settings, Payment Settings, Email Settings & Color controls.
->For Gmail Port: 587 , Host: smtp.gmail.com
->For Yahoo Port: 587 , Host: smtp.mail.yahoo.com
->For Outlook Port: 587 , Host: smtp-mail.outlook.com
5. Color Settings ( Color controls for Menu Bar , Header, Footer & Body)
Keep in mind, if you change app version number then a pop up (like below image) will appear on dashboad which will instruct you to refresh. Change the app version only when you do some code label change on Client project.
Admin user has below menus
we will go through all of those.
In Admin Dashboard, below charts are available
Also in dashboard you will see a message dialog box(see below image) if your existing subscription plan is expired and you can renew your plan by using that.
As an admin you can add and manage your candidates from here.
All your question category will apear here and you can add & manage new categories from here.
It is the starting point of a new Assessment. You can create a new Assessment by filling below fields,
List of assessments in box shape with some other fields will be viewed here and you can add question by filling below fields
(8-13) applicable for MCQ questions only.
Design templates from here and allow those to recognize your candidates
Avaiable fields
There is a list (Student Name, Mobile, Address, Title etc.) on top of all fields. You can drag them and drop on any of the text fields as per your need.
All your candidates exam records will find here and examine options will visible for descriptive questions assessments. You can filter those and can download those on PDF,CSV & Excel. Also here you find a Sent Email button, use that if you want to sent email to your selected candidates.
Here you can see all payments data of your paid assessments. Also you need to set your Stripe secret key to accept payments for paid assessment by clicking Payment Settings button on top right corner.
On candidate dashboard, you can see all your available assessments and can start by clicking the start button.
Here as a candidate you will find your all attempted assessments results in detail.
Some data analysis here based on your login, exam attempt, data usage and others.
Once again, thank you so much for purchasing this script. As I said at the beginning, I'd be glad to help you if you have any questions relating to this script. I'll do my best to assist. If you have a more general question relating to this script you may also comment directly on product comment section.
Sangib Kumar Saha