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
84 changes: 84 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# Facultyware Survey System

## Deskripsi Aplikasi

Facultyware Survey System merupakan aplikasi berbasis web yang digunakan untuk mengelola survey secara digital. Sistem menyediakan fitur manajemen survey, pertanyaan, opsi jawaban, assignment pertanyaan ke survey, REST API, export PDF, serta autentikasi pengguna menggunakan session.

Fitur utama yang tersedia:

- Login dan Logout
- CRUD Survey
- Publish Survey
- Search dan Pagination Survey
- Export PDF Survey
- REST API Survey
- CRUD Pertanyaan Survey
- REST API Pertanyaan
- CRUD Opsi Jawaban
- CRUD Assignment Pertanyaan ke Survey
- Validasi Form
- Session Based Access Control

---

## Cara Instalasi dan Menjalankan Aplikasi

### Clone Repository

```bash
git clone https://github.com/hanifalhaj05-a11y/facultyware.git
cd facultyware
```

### Install Dependency

```bash
npm install
```

### Buat Database MySQL

```sql
CREATE DATABASE facultyware;
```

Import file database ke database `facultyware`.

### Konfigurasi Environment

Buat file `.env`

```env
DB_HOST=localhost
DB_USER=root
DB_PASSWORD=
DB_NAME=facultyware
PORT=3000
SESSION_SECRET=facultyware
```

### Menjalankan Aplikasi

```bash
npm start
```

atau

```bash
node app.js
```

Aplikasi dapat diakses melalui:

```text
http://localhost:3000
```

---

## Pembagian Tugas Anggota

| NIM | Nama | Tugas |
|------|------|--------|
| 2411523023 | Hanif Al Haj | Implementasi Authentication, Session Based Access Control, CRUD Survey, CRUD Pertanyaan, CRUD Opsi Jawaban, CRUD Assignment, REST API, Export PDF, Validasi Form, Testing Playwright, Deployment |
11 changes: 10 additions & 1 deletion app.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ var MySQLStore = require('express-mysql-session')(session);

var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var surveyRouter = require('./routes/survey');
var questionRouter = require('./routes/question');
var optionRouter = require("./routes/option");
var assignmentRouter = require("./routes/assignment");
var apiRouter = require("./routes/api");
const { notFoundHandler, errorHandler } = require('./middlewares/error');

var app = express();
Expand Down Expand Up @@ -43,7 +48,11 @@ app.use(session({

app.use('/', indexRouter);
app.use('/users', usersRouter);

app.use('/survey', surveyRouter);
app.use('/question', questionRouter);
app.use('/option', optionRouter);
app.use('/assignment', assignmentRouter);
app.use('/api', apiRouter);
// catch 404 and forward to error handler
app.use(notFoundHandler);

Expand Down
29 changes: 29 additions & 0 deletions controllers/api/questionApiController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
const db = require("../../lib/db");

const index = async (req, res, next) => {

try {

const [questions] = await db.query(`
SELECT
id,
question_text,
type,
is_active,
created_at,
updated_at
FROM survey_questions
ORDER BY id DESC
`);

res.status(200).json(questions);

} catch (err) {
next(err);
}

};

module.exports = {
index
};
21 changes: 21 additions & 0 deletions controllers/api/surveyApiController.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
const db = require("../../lib/db");

const index = async (req, res, next) => {

try {

const [rows] = await db.query(
"SELECT * FROM surveys ORDER BY id DESC"
);

res.json(rows);

} catch (err) {
next(err);
}

};

module.exports = {
index
};
Loading