Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .chglog/CHANGELOG.tpl.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,4 @@
[{{ .Tag.Name }}]: {{ $.Info.RepositoryURL }}/compare/{{ .Tag.Previous.Name }}...{{ .Tag.Name }}
{{ end -}}
{{ end -}}
{{ end -}}
{{ end -}}
2 changes: 1 addition & 1 deletion .github/templates/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,4 @@

## Note to reviewers

<!-- Add notes to reviewers if applicable -->
<!-- Add notes to reviewers if applicable -->
4 changes: 2 additions & 2 deletions .github/templates/bug-report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ body:
id: current-behavior
attributes:
label: Current Behavior
description: Tell us what happens instead of the expected behavior
description: Tell us what happens instead of the expected behavior
placeholder: Tell us what you see!
value: "A bug happened!"
validations:
Expand All @@ -34,4 +34,4 @@ body:
label: Additional information
description: Is there anything else we should know about this bug?
validations:
required: false
required: false
22 changes: 11 additions & 11 deletions .github/templates/epic-template.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
---
name: Epic template
about: This template provides a basic structure for epics
description: Epic/Feature Summary
about: This template provides a basic structure for epics
description: Epic/Feature Summary
title: "[Epic]: "
labels: ["epic"]
---

# Epic
Epic/Feature Summary
# Epic
Epic/Feature Summary

* An epic represents a large feature on the roadmap. Implementation is expected to take more than a single sprint

# Acceptance criteria

- [ ] This is something that can be verified to show that this epic is satisfied.

# Implementation Ready Checklist
1. - [ ] Acceptance criteria defined
2. - [ ] Team understands acceptance criteria
3. - [ ] User workflows defined / designed
4. - [ ] Acceptance criteria is verifiable
# Implementation Ready Checklist
1. - [ ] Acceptance criteria defined
2. - [ ] Team understands acceptance criteria
3. - [ ] User workflows defined / designed
4. - [ ] Acceptance criteria is verifiable
5. - [ ] External / 3rd Party dependencies identified

# Workflow / Design
Define workflow here or add url link to workflow / design document describing it.
# Workflow / Design
Define workflow here or add url link to workflow / design document describing it.
1 change: 0 additions & 1 deletion .github/templates/user-story-template.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,3 @@ Then : [Output of taking action]
2. - [ ] Team understands acceptance criteria
3. - [ ] Team has defined solution / steps to satisfy acceptance criteria
4. - [ ] Acceptance criteria is verifiable / testable

19 changes: 17 additions & 2 deletions .github/workflows/test-build-push-api.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
- develop
paths:
- "api/**"
- ".github/workflows/test-build-push-api.yaml"
- ".github/workflows/test-build-push-api.yaml"
- "!**.md"
pull_request:
types: ["opened", "reopened", "synchronize", "ready_for_review"]
Expand All @@ -32,7 +32,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: '1.22'
go-version: '1.23'
timeout-minutes: 2

- name: Install Dependencies
Expand All @@ -47,6 +47,21 @@ jobs:
run: go test ./... -v
timeout-minutes: 5

- name: Install Dependencies
run: |
export PATH=$PATH:$(go env GOPATH)/bin
pip install pre-commit
go install golang.org/x/tools/cmd/[email protected]
go install github.com/fzipp/gocyclo/cmd/[email protected]
go install github.com/golangci/golangci-lint/cmd/[email protected]
go install -v github.com/go-critic/go-critic/cmd/[email protected]
timeout-minutes: 20

- name: Run Precommit Hooks
run: |
SKIP="no-commit-to-branch,go-mod-tidy,go-test,node-lint" pre-commit run --all-files
timeout-minutes: 10

build:
needs: backend-tests
name: Build and Push Image
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/test-build-push-app.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ on:
paths:
- "app/**"
- ".github/workflows/test-build-push-app.yaml"
- "!**.md"
- "!**.md"
jobs:
frontend-tests:
name: Frontend Tests
Expand Down Expand Up @@ -75,7 +75,7 @@ jobs:
if: ${{ github.event_name == 'pull_request' }}
run: echo "TAGS=test-${{ github.sha }}" >> $GITHUB_ENV
timeout-minutes: 1

- name: Build and Push Docker Image
uses: docker/build-push-action@v6
with:
Expand Down
25 changes: 25 additions & 0 deletions .golangci.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
version: "2"
linters:
settings:
errcheck:
check-blank: true
misspell:
locale: US
exclusions:
generated: lax
presets:
- comments
- common-false-positives
- legacy
- std-error-handling
paths:
- third_party$
- builtin$
- examples$
formatters:
exclusions:
generated: lax
paths:
- third_party$
- builtin$
- examples$
9 changes: 1 addition & 8 deletions .husky/pre-commit
Original file line number Diff line number Diff line change
@@ -1,11 +1,4 @@
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

line_count=$(cd app && npm run lint-fix| wc -l)

if [ "$line_count" -gt 4 ]; then
cd app && npm run lint
exit 1
else
exit 0
fi
cd app && npm run lint && npm run format --check
2 changes: 1 addition & 1 deletion CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,4 +54,4 @@ Project maintainers who do not follow or enforce the Code of Conduct in good fai
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
[version]: http://contributor-covenant.org/version/1/4/
8 changes: 4 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,19 @@
- We kindly ask you not to report bugs via GitHub Issues unless you are certain to have found a fully reproducible and previously unreported issue that must be fixed directly in our source code. Thank you for your careful consideration!
- When reporting a problem, always include the software versions you are using and other information about your environment such as browser, browser plugins, operating system, storage type, memory size, and processor
- Note that all issue subscribers receive an email notification from GitHub whenever a new comment is added, so these should only be used for sharing important information and not for discussions, questions or expressing personal opinions
- Open a new issue and connect the PR regarding that issue and put a symbol, tag on it
- Open a new issue and connect the PR regarding that issue and put a symbol, tag on it
- Either it's a bug fix, or feat etc
- Contact us or a community member if you need help, it could be a local configuration problem, or a misunderstanding in how the software works
- This gives our team the opportunity to improve the docs and provide best-in-class support to you, instead of handling unclear/duplicate bug reports or triggering a flood of notifications by responding to comments

<br><br>

# Submitting Pull request:
# Submitting Pull request:

- Follow our step-by-step guide to learn how to submit new features, bug fixes, and documentation enhancements.


- Pull Requests are the way concrete changes are made to the code, documentation, dependencies, and tools contained in the nodejs/node repository.
- Pull Requests are the way concrete changes are made to the code, documentation, dependencies, and tools contained in the nodejs/node repository.

- Be aware that reviewing, testing and finally merging pull requests requires significant resources on our side. It can therefore take several weeks if it is not just a small fix, especially if extensive testing is needed to prevent bugs from getting into our stable version.

Expand All @@ -41,4 +41,4 @@
- We operate a number of web services that help us develop and maintain our software in collaboration with the open source community like aws configuartions, smtp and all
- Because many of these apps and tools were originally developed for internal use without a high level of privacy in mind, we ask that you do not enter personal information such as your real name or personal email address if you want it to remain private.

- Personal details may otherwise show up in logs, source code, translation files, commit messages, and pull request comments.
- Personal details may otherwise show up in logs, source code, translation files, commit messages, and pull request comments.
4 changes: 2 additions & 2 deletions LICENSE.txt → LICENSE
Original file line number Diff line number Diff line change
Expand Up @@ -630,7 +630,7 @@ state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.

<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 2025 Improwised Technologies Pvt Ltd
Copyright (C) 2025 Improwised Technologies Pvt Ltd

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
Expand Down Expand Up @@ -658,4 +658,4 @@ specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<http://www.gnu.org/licenses/>.
<http://www.gnu.org/licenses/>.
72 changes: 45 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,56 @@
<p align="center">
<img src="app/public/readme-logo.webp" alt="Jovvix Logo" width="200"/>
<a href="https://jovvix.com/">
<img src="app/public/readme-logo.webp" alt="Jovvix Logo" width="200"/>
</a>
</p>

<h3 align="center">
<b>
Open-Source Quizzing Built for Live Engagement
</b>
</h3 >


<p align="center">
<strong>
Open-Source Quizzing Built for Live Engagement
</strong>
</p>

# jovVix
<p align="center">
<a href="https://goreportcard.com/report/github.com/Improwised/JovVix/api">
<img alt="Go Report Card" src="https://goreportcard.com/badge/github.com/Improwised/jovVix/api"/>
</a>
<a href="https://github.com/Improwised/jovVix/blob/main/api/go.mod">
<img alt="Go version" src="https://img.shields.io/github/go-mod/go-version/Improwised/jovVix?filename=api%2Fgo.mod"/>
</a>
<a href="https://github.com/Improwised/jovVix/blob/main/LICENSE">
<img alt="License" src="https://img.shields.io/github/license/Improwised/jovVix"/>
</a>
<a href="https://github.com/Improwised/jovVix/actions/workflows/test-build-push-api.yaml">
<img alt="Backend Workflow" src="https://img.shields.io/github/actions/workflow/status/Improwised/jovVix/.github/workflows/test-build-push-api.yaml?branch=main&label=backend-workflow"/>
</a>
<a href="https://github.com/Improwised/jovVix/actions/workflows/test-build-push-app.yaml">
<img alt="Frontend Workflow" src="https://img.shields.io/github/actions/workflow/status/Improwised/jovVix/.github/workflows/test-build-push-app.yaml?branch=main&label=frontend-workflow"/>
</a>
<a href="https://github.com/Improwised/jovVix/releases/latest">
<img alt="Latest Release" src="https://img.shields.io/github/v/release/Improwised/jovVix"/>
</a>
</p>

## Overview
- jovVix is a fun and interactive platform where users can enjoy playing quizzes while admins have the ability to create engaging and diverse quizzes.
- Designed to provide a fun and educational experience while ensuring smooth admin management, jovVix is the perfect solution for interactive quiz-based learning, competitions, or corporate events.

- App is an interactive, real-time platform that supports diverse
question types like
- Multiple choice
- Survey based
- Code based
- Image based
- App provides instant feedback and live ranks and leaderboards.
With features like
- In-depth analytics
- real dynamic avatars
- customizable csv with different question types like: Image based, code based, survey based questions
- customizable csv with different question types.
<br><br>

## Live Demo & Website

- **Website**: Visit [https://jovvix.com](https://jovvix.com) to learn more about the platform, explore the **About** section, and access full **Documentation**.
- **Website**: Visit [https://jovvix.com](https://jovvix.com) to learn more about the platform, and **Documentation**.
- **Live Demo**: Try out the platform live at [https://app.jovvix.com](https://app.jovvix.com) to experience how the quiz system works — including joining a quiz, answering questions in real-time, and viewing live leaderboards.

## Key Attributes:
Expand All @@ -39,9 +63,9 @@ Open-Source Quizzing Built for Live Engagement
### Development and Quality
- Linting: Utilizes ESLint to maintain code quality and consistency.
- Authentication: Ory Kratos manages secure user authentication and session management.
- Third-Party Integrations: Includes S3 for image handling, as well as other integrations as required.
- Third-Party Integrations: Includes S3 compatible object storage for image handling, as well as other integrations as required.
- SMTP Services: Configured for email services, supporting verification and password recovery.
- Testing: We have performed the unit testing in this application
- Testing: We have performed the unit testing in this application.
- Containerization: Packaged with Docker for streamlined deployment and environment consistency.
- RESTful API: Offers a RESTful API for integration and easy access to app functionality.
- Environment Variables: Follows the 12-factor app principles with environment variable configuration.
Expand All @@ -65,8 +89,8 @@ Open-Source Quizzing Built for Live Engagement
- During the quiz at each question
- After the quiz, showcasing winners and individual performance
- **Customization Options:** Offers customizable quiz features for educators, workshop hosts, and event organizers to suit their needs.
- **Share quiz feature** Users can share their quiz to other users through email and can grant their preferred permission while sharing to the other one
- **CSV Uploads:** Enables efficient quiz creation through CSV file uploads, allowing users to preview, edit, and allowing users to seamlessly create quizzes
- **Share quiz feature:** Users can share their quiz to other users through email and can grant their preferred permission while sharing to the other one.
- **CSV Uploads:** Enables efficient quiz creation through CSV file uploads, allowing users to preview, edit, and allowing users to seamlessly create quizzes.
- You can see the CSV formatting guidelines here : [csv-formatting-guide.md](docs/csv-formatting-guide.md)
- **Mobile-Friendly Design:** Fully responsive and works seamlessly on mobile and desktop devices.
- **Admin Tools:** Advanced admin panel for managing quizzes, participants, and results.
Expand Down Expand Up @@ -111,7 +135,7 @@ Open-Source Quizzing Built for Live Engagement
cd jovVix
```

- Configure your env settings into .env.docker if you want to integrate any changes otherwise keep the default ones
- Configure your env settings into .env.docker if you want to integrate any changes otherwise keep the default ones.

- Then build and run the docker compose file in your environment by following command
```
Expand All @@ -133,9 +157,9 @@ Open-Source Quizzing Built for Live Engagement

| Package | Version |
| --- | --- |
| [Node.js](https://nodejs.org/en/) | v18.0+ |
| [Node.js](https://nodejs.org/en/) | v19.0+ |
| [Nuxt](https://nuxt.com/) | v3.0.0 |
| [Go](https://golang.org/) | v1.21+ |
| [Go](https://golang.org/) | ![GitHub go.mod Go version](https://img.shields.io/github/go-mod/go-version/Improwised/jovVix?filename=api%2Fgo.mod)|


- jovVix is a fun and interactive platform where users can enjoy playing quizzes while admins have the ability to create engaging and diverse quizzes.
Expand Down Expand Up @@ -171,7 +195,7 @@ Open-Source Quizzing Built for Live Engagement
```
cd api
docker-compose up
go run app.go migrate
go run app.go migrate up
go run app.go api
```

Expand All @@ -189,7 +213,6 @@ Open-Source Quizzing Built for Live Engagement
- Afterwards run the frontend development server:

```
npm i
npm run dev
```
- Then you have setup jovVix successfully in your local environment
Expand All @@ -213,13 +236,10 @@ Open-Source Quizzing Built for Live Engagement


### API Overview:
- locally you could start your API server by running the following command :
- locally you can check the API documentation by running the backend server and visit :
```
http://127.0.0.1:3000/api/v1/docs
```
- This would open the swagger documentation

- **Backend:** jovVix uses a Golang backend to handle the server-side logic.
- This would open the swagger documentation

### Upgrading and changelog:
Expand All @@ -232,9 +252,7 @@ http://127.0.0.1:3000/api/v1/docs
## Code of Conduct:
- This platforms also provides the [Code of Conduct](./CODE_OF_CONDUCT.md)

## Developer

## Guide:
## Developer Guide:
If you're a developer looking to contribute or modify jovVix, here is a brief guide to get started: [Getting started](#getting-started-for-local-setup-from-source) OR, you could just `docker-compose up`

### Code Structure Overview:
Expand Down
5 changes: 0 additions & 5 deletions api/.golangci.yaml

This file was deleted.

2 changes: 1 addition & 1 deletion api/controllers/api/v1/analytics_board_admin_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ func (fc *AnalyticsBoardAdminController) GetAnalyticsForAdmin(ctx *fiber.Ctx) er

var activeQuizId = ctx.Query(constants.ActiveQuizId, "")

if activeQuizId == "" || !(len(activeQuizId) == 36) {
if activeQuizId == "" || len(activeQuizId) != 36 {
fc.logger.Error("active quiz id is not valid")
return utils.JSONFail(ctx, http.StatusBadRequest, errors.New("active quiz id should be valid string").Error())
}
Expand Down
Loading
Loading