Skip to content

DanDigits/Project_Merit

 
 

Repository files navigation

      

License

Dashboard

Explore our app with this demo account!

Demo user:

Email: [email protected]
Password: testingxyz

Introduction

Project Merit is an easy tool where Air Force personnel can write, edit, and save performance reports from any device, and allows exporting narratives to download as a PDF for submission through official Air Force channels.

Getting Started

This web application requires Linux, and likewise being familiar with commandline. For Windows devices, the easiest way to run the application would be through Docker, using the GUI (desktop program).

That being said, there are a couple ways to run this application:

  1. Docker Compose: The easiest way; make sure you change environment variables accordingly for the following variables. Modifying these can be found in the Dockerfile and .env file:

    ENV Variable Value
    DB_URI MongoDB URI link
    NEXTAUTH_SECRET A cipher for encrypting sessions
    NEXT_PUBLIC_NEXTAUTH_URL Your sites address
    NEXTAUTH_URL Your sites address

    Do note if you are running the application locally, all that needs adding is DB_URI and NEXTAUTH_SECRET, and uncommenting the URL environment variables in .env.

    Once done, begin the application by running in terminal docker-compose up at the root directory, and visit your browser at http://localhost:3000. See NextJS and NextAuth documentation for more information on the environment variables provided.

  2. Docker: Remember to change the requisite environnment variables as is shown in option 1, as this is a similar but different process. Start with running docker build -t Merit . at this repositories root directory, which will create an 'image' in your docker installation; type docker images to see more information, the image should have the tag "Merit". Afterwards, you can start a container from the 'image' by running docker run -d --rm -p 3000:3000 --restart=unless-stopped --name Merit Merit which will make it accessable on the same device at http://localhost:3000

  3. Github Actions: This process is a little more difficult and is for cloud hosting the application, namely with Amazon which is how this application was done so during development. Fork/clone this repository and add the following variables to your repositories secrets:

    ENV Variable Value
    AWS_ACCESS_KEY_ID AWS IAM User Access Key
    AWS_SECRET_ACCESS_KEY AWS IAM User Secret Key
    DOMAIN_CERT Your Amazon CM certificate
    DB_URI MongoDB URI link
    NEXTAUTH_SECRET A cipher for encrypting NextJS sessions validators
    NEXT_PUBLIC_NEXTAUTH_URL Your sites address
    NEXTAUTH_URL Your sites address

    Likewise modify the .env file to add email functionality with your own email service provider and account, then make a push to your main!

    Note You can run the terraform commands explictly, though please note the terraform state backend is currently not instantiated with the code here, so make sure you create it and modify the files accordingly. If you dont want a remote backend, just comment out lines 4-5 in main.tf, and the terraform.state file will be created locally in your directory; be sure to secure it as it can have credentials in plaintext.

  4. NPM: Download the application and run

npm run dev
# or
yarn dev

Open http://localhost:3000 with your local browser to see the result.

Documentation

API routes can be accessed based on which endpoint you would like to change. The reports endpoint can be edited in src/app/api/reports/route.js. Likewise, the user endpoint can be edited in src/app/api/user/route.js.

System Design

Use Case Digrams

Use Case Diagram - User

Use Case Diagram - Supervisor

Use Case Diagram - Admin

Class Diagram

Class Diagram

Activity Diagrams

Activity Diagram

Support

Create a bug report

If you see an error message or run into an issue, please create bug report.

Submit a feature request

If you have an idea, or you're missing a capability that would make development easier and more robust, please Submit feature request.

If a similar feature request already exists, don't forget to leave a "+1".

Contributing

Project Merit is an open-source project. We are committed to making this application a success and appreciate any contributions. Whether you are recommending new features, alerting us to bugs, or just spreading the word - we are delighted to welcome you to the Project Merit community.

Please refer to our Contribution Guidelines and Code of Conduct.

Learn More

To learn more about Next.js, take a look at the following resources:

You can check out the Next.js GitHub repository - your feedback and contributions are welcome!

Senior Design Project (Group 15)

License

MIT License

About

Webapp for creating and managing performance reports for Air Force personnel (no longer live)

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 99.1%
  • Other 0.9%