Post graduate journal system is a full-stack project designed to streamline the process of handling research publications within Post graduate college - police academy. This system serves as a comprehensive platform for storing, managing, and reviewing all information related to research, researchers, journal editions, judges, and judge examinations.
-
Research Publication: Police officers can publish their research through the system, providing details such as the research title, date of submission, and associated journal edition.
-
Researcher Information: The system maintains a database of researchers, including their names, ranks, contact details, workplace information, and attached documents such as photos and curriculum vitae.
-
Journal Editions: Each research is associated with a specific journal edition, capturing information about the edition date and edition number.
-
Judge Management: The system keeps track of all judges involved in the examination process. It includes details about their degrees, names, and other relevant information.
-
Judge Examination: For each research, the system records the judge examinations. This involves tracking outgoing and incoming letters, examination dates, and results.
-
User Authentication: Secure user authentication system for access control and data protection.
-
Login Credentials: Utilizes username and password-based login credentials for authorized access.
For security reasons and the sensitivity of the information and research data, this system is designed to operate offline. The offline functionality ensures that the data remains within a secure environment, accessible only to authorized personnel within the police academy.
The project is organized into frontend and backend. The frontend, implemented using React, manages the user interface and interactions. The backend, developed using Node.js and Express, handles data storage, retrieval, and business logic.
+---post-graduate-journal
| +---front-end
| | +---public
| | ---src
| ---back-end
| +---src
| +---migrations
| +---spec
| ---config
The frontend structure is organized around different components, including form components for adding and editing research, details components for displaying comprehensive information, and search components for efficiently querying the database.
+---public
| +---icons
| \---images
\---src
+---components
| +---detailsComponents
| +---fromComponents
| | +---finalStep
| | +---journalInfo
| | +---progressBar
| | +---researcherInfo
| | +---researchInfo
| | +---scientificExamination
| | | \---judgeExamination
| | \---securityExamination
| +---judgeInfoComponents
| \---searchComponents
+---context
+---data
+---fonts
| \---Cairo
| \---static
+---hooks
+---pages
+---services
+---utilities
\---validation
npm run frontend:install
npm run frontend:start
npm run frontend:build
REACT_APP_API_URL= your API URL
REACT_APP_BASE_URL= your Base URL
- HTML5
- CSS3
- JavaScript
- React.js
- react-router-dom
- axios
- bootstrap
- react-bootstrap
- react-datepicker
- react-icons
- react-toastify
- sweetalert2
The backend structure is built on controllers, models, and routes. It encompasses functionalities such as managing researchers, handling research submissions.
+---research-copies
+---research-summaries
+---research-summaries-ar
+---researcher-photo
+---migrations
| \---sqls
+---spec
| \---support
\---src
+---helpers
+---middleware
+---models
| \---tests
+---routes
| \---api
| +---form_submit
| | +---handler
| | \---tests
| +---journal
| | \---handler
| +---judge
| | \---handler
| +---judge_info
| | \---handler
| +---research
| | \---handler
| +---researcher
| | \---handler
| \---user
\---utilities
npm run api:install
npm run api:start
npm run api:build
cd back-end
npm run migrate
PORT
# environment variables for database connection
PG_HOST
PG_USER
PG_DATABASE
PG_TEST_DATABASE
PG_PASSWORD
PG_PORT
NODE_ENV= "DEV" or "test"
# ACCESS TOKEN SECRET KEY for JWT
ACCESS_TOKEN_SECRET
# first user name and password
ADMIN_NAME="admin"
ADMIN_PASSWORD="1234567"
- Postgres for the database
- Node.js
- Express.js
- Typescript
- dotenv from npm for managing environment variables
- db-migrate from npm for migrations
- jsonwebtoken from npm for working with JWTs
- Unit test with Jasmine
- Formatting with Prettier and Eslint
ERD - Entity Relationship Diagram
- Frontend Mentor - @ibrahim11elian