Publishing Your Project

Student Project Lab: Student Publication Guide

Overview

Student Project Lab provides hosting for approved student-developed software projects. The platform allows students to publish working applications that can be shared with employers, included in professional portfolios, or demonstrated as academic accomplishments.

Publication is available for eligible capstone projects, course projects, independent studies, research projects, and other approved student-developed applications.

Hosting is provided at the department's discretion. 

1. How Publication Works

The publication process consists of six stages:

  1. Develop: Complete your application in a Git repository.

  2. Prepare: Configure your project for containerized deployment and document its requirements.

  3. Test: Verify that your application builds, runs, and passes the required security checks.

  4. Submit: Identify an exact release candidate and request a security review.

  5. Review: Address any findings identified during faculty review.

  6. Publish: Once approved, the department deploys the approved version to Student Project Lab.

Students are responsible for preparing their applications. Department administrators are responsible for production deployment, infrastructure management, and hosting authorization.

You will not receive SSH access to the production server or administrative access to the deployment platform.

2. Source Control Requirements

All applications must be maintained in a Git repository accessible to the department.

GitHub is the preferred hosting provider.

Your repository may be:

Repository requirements

Your repository must:

Private repositories are permitted, provided the department can access them through an approved integration.

A typical application might use:

my-project/
├── .github/
│   └── workflows/
│       └── ci.yml
├── frontend/
│   ├── Dockerfile
│   └── ...
├── backend/
│   ├── Dockerfile
│   └── ...
├── compose.yaml
├── .dockerignore
├── .gitignore
├── .env.example
├── README.md
└── DEPLOYMENT.md

The exact structure may differ by framework. Not every application requires a frontend, backend, or database.

3. Containerization Requirements

Student Project Lab uses Docker to host applications.

Your application must be deployable using Docker Compose unless the department explicitly approves another deployment method.

Dockerfile

Each custom application image must have a working Dockerfile.

Your Dockerfile should:

Docker Compose

Your repository must include a compose.yaml file defining the services required to operate your application.

For a basic web application listening on port 8000, an example is:

services:
  web:
    build:
      context: .
      dockerfile: Dockerfile

    restart: unless-stopped

    environment:
      APP_ENV: production
      SECRET_KEY: ${SECRET_KEY:?Required}

    expose:
      - "8000"

    healthcheck:
      test:
        - CMD
        - python
        - -c
        - "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=3)"
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 30s

This example assumes a Python application with a /health endpoint. Adjust the health check and startup behavior for your framework.

Your application must listen on the configured port and bind to 0.0.0.0, not only 127.0.0.1.

Coolify handles public HTTPS and domain routing. Do not configure a separate public-facing reverse proxy unless it is required and explicitly approved.

Multiple services

Applications may use supporting services, such as:

Internal services must communicate over private container networks. Databases and other internal services must not expose public host ports.

Use persistent Docker volumes for data that must survive container replacement.

Local testing

Before submission, confirm that your application runs using Docker Compose with a local environment configuration:

docker compose config
docker compose up --build -d
docker compose ps

Inspect application logs:

docker compose logs --tail=100

Stop the application when finished:

docker compose down

Do not use docker compose down -v if you need to preserve local database or application data.

A locally successful deployment does not guarantee approval, but applications that cannot build and run locally will not be accepted for review.

4. Environment Variables and Secrets

Applications must support production configuration without modifying source code.

Use environment variables or another approved secrets mechanism for values such as:

Include an .env.example file showing the required variable names.

Example:

APP_ENV=production
SECRET_KEY=
DATABASE_URL=

Never commit a real .env file containing credentials.

The department will configure approved production secrets using the hosting platform.

Do not include production passwords or other secrets in documentation, screenshots, review requests, or GitHub issues.

5. Application Requirements

Your application must:

Applications that require special infrastructure, hardware, privileged containers, or unusually large resources must receive prior approval.

6. Required Documentation

Include a README.md and a DEPLOYMENT.md file.

README.md

Describe:

DEPLOYMENT.md

Describe:

  1. Required containers and services.

  2. Application ports and HTTP endpoints.

  3. Required environment variables, without secret values.

  4. Database setup and migration procedures.

  5. Required persistent storage.

  6. Startup and health-check behavior.

  7. External API or network access requirements.

  8. Initial configuration or administrative setup.

  9. Backup and restoration considerations.

  10. Known limitations and deployment risks.

A reviewer or administrator should be able to understand how the application runs without contacting you for basic setup instructions.

7. Preparing a Release Candidate

Publication is based on a specific Git commit rather than whichever code happens to be in your repository.

Before requesting review:

  1. Commit all changes.

  2. Push the intended version to your remote repository.

  3. Verify tests and local deployment.

  4. Create an annotated release-candidate tag.

For your first release:

git tag -a v1.0.0-rc.1 -m "Publication review candidate"
git push origin v1.0.0-rc.1

Find the associated commit:

git rev-parse v1.0.0-rc.1^{commit}

Submit the full commit SHA and tag in your review request.

Do not move or replace a submitted tag. If changes are required, create a new commit and a new candidate tag, such as v1.0.0-rc.2.

Do not assume that pushing a tag will deploy the application. Only approved releases are authorized for production.

8. Publication and Updates

After a release passes security review, the department may approve the commit as a production release, such as v1.0.0, and publish it at an assigned Student Project Lab subdomain.

Example:

inventory.studentprojectlab.com

Updates to published applications require a new release candidate and approval. The level of review may depend on the changes being introduced.

Minor documentation updates may need less review than changes to authentication, database handling, file uploads, or application dependencies.

The department may suspend, remove, or decline an application if it introduces security, legal, operational, or resource concerns.

9. Hosting Responsibilities

Students are responsible for the correctness, security, and maintainability of their application code.

The department manages the production infrastructure, domains, HTTPS, deployment authorization, and approved hosting configurations.

Students must not assume indefinite hosting. Applications may be retired after the approved hosting period, and extensions require departmental authorization.

Students should maintain independent copies of their source code and any project data they are authorized to retain.

10. Publication Checklist

Before requesting a security review, confirm:

Next: Read the Application Security Requirements, then follow the procedure in Requesting Security Review and Publication.

Student Project Lab: Application Security Requirements

Purpose

All applications published through Student Project Lab are publicly accessible software running on shared department-managed infrastructure.

To protect users, project developers, other hosted applications, and the hosting environment, every application must satisfy the security requirements described here.

All applications must pass security review before publication.

The requirements apply to initial releases and subsequent updates. Approval of one release does not automatically authorize future releases.

These requirements are informed by the OWASP Application Security Verification Standard (ASVS), with a baseline adapted to the risks and resources of student-developed applications. Passing the Student Project Lab review does not constitute OWASP certification or guarantee that an application is free of vulnerabilities.

1. Secure Development

Applications must follow recognized secure software development practices.

Requirements

Students must disclose unresolved security findings and known vulnerabilities during review.

2. Authentication and Authorization

Applications with user accounts must implement appropriate authentication and authorization controls.

Requirements

Students must test access control using accounts with different permission levels.

Applications using third-party identity providers must document the integration and its security assumptions.

3. Secrets and Sensitive Information

Secrets must never be embedded in source code, container images, or repository history.

This includes:

Use the deployment platform's approved secret configuration.

Applications must not log passwords, session tokens, authorization headers, or other sensitive credentials.

Publicly hosted applications must not collect or store actual student records, protected educational information, medical information, financial account information, or other sensitive personal data without explicit prior authorization and an approved protection plan.

Synthetic or fictional demonstration data is preferred.

Do not populate demonstration databases with real information copied from university systems, workplaces, or other individuals.

4. Production Configuration

Applications must be configured for production operation.

Requirements

The hosting platform provides HTTPS termination. Applications must still correctly handle forwarded protocol information and securely configure authentication and sessions.

5. Container Security

Student applications share infrastructure with other hosted projects. Container security is therefore mandatory.

Prohibited configurations

The following are prohibited unless the department explicitly authorizes an exception:

Applications should use non-root container users wherever feasible.

Images must come from trusted sources and must not contain unnecessary software or embedded credentials.

The department may impose CPU, memory, disk, network, or process limits.

6. Files and Persistent Storage

Applications that accept file uploads must:

Applications must not rely on the container's temporary filesystem for persistent application data.

Persistent storage must be declared and documented.

7. Database Security

Applications using databases must:

Development and production databases must remain separate.

8. Third-Party Services and Network Access

All external dependencies must be documented.

Examples include payment services, mapping APIs, email delivery, external databases, cloud storage, and AI APIs.

Applications may only use external services for which the student or department has appropriate authorization.

The following activities require specific approval and may be prohibited on the shared platform:

Some cybersecurity research projects may be legitimate academic work but unsuitable for shared public hosting. The department may require a separate isolated environment instead.

9. Security Testing

Students must perform reasonable security testing before requesting review.

At minimum:

Students may use alternative tools if they provide comparable coverage.

Testing must be limited to applications and systems the student owns or is explicitly authorized to assess.

10. Requirements for Higher-Risk Features

Some application features require additional review because they introduce greater security or privacy risk.

Students must identify these features in their publication request.

Examples include:

The department may require additional testing, architectural changes, isolation, or external services before publication.

11. Vulnerability Severity and Approval

Security findings will be evaluated based on exploitability, impact, exposure, and the application's purpose.

The department may use CVSS alongside contextual risk analysis when classifying vulnerabilities.

Severity Publication requirement
Critical Must be resolved before publication
High Must be resolved before publication
Medium Must be resolved or receive documented risk acceptance
Low May be accepted with documented remediation recommendations
Informational Document where appropriate

Severity classifications are determined by the reviewer, not solely by automated scanning tools.

A finding marked as a false positive must be explained and accepted by the reviewer.

A successful automated security scan does not replace manual review.

12. Review Outcomes

Security reviews may result in:

Approved: The identified commit meets the publication requirements.

Approved with conditions: Publication is permitted only after specified conditions are satisfied and verified.

Changes required: The student must correct identified deficiencies and submit a new release candidate.

Rejected: The application is unsuitable for the shared hosting environment or presents unacceptable risk.

The department reserves the right to reject, suspend, or remove applications that violate these requirements.

13. Changes After Approval

Security approval is associated with an exact source-code revision and deployment configuration.

Any code change after approval may require a new review.

Changes involving authentication, permissions, dependencies, API behavior, database access, infrastructure configuration, or sensitive data handling will generally require renewed security assessment.

Students may not bypass this process by pushing new tags, altering deployment files, or attempting to access production directly.

14. Security Review Checklist

Students must complete the following checklist before requesting publication.

Source code

Authentication and authorization

Secrets and privacy

Deployment

Verification

Security review is a publication requirement, not a guarantee of security. Students remain responsible for promptly reporting newly discovered vulnerabilities in their applications.

Student Project Lab: Requesting Security Review and Publication

Overview

Before an application can be published on Student Project Lab, the student or project team must submit a publication request and pass a security review.

The review establishes whether the proposed application meets the technical, security, and operational requirements for public hosting.

Publication requests must identify an exact version of the application.

No application may be published without departmental approval.

1. Before Requesting a Review

Complete the following tasks:

  1. Finish the application version you intend to publish.

  2. Push all relevant changes to your Git repository.

  3. Verify that Docker Compose can build and run the project.

  4. Complete the Student Project Lab security checklist.

  5. Run applicable automated tests and security scans.

  6. Update README.md and DEPLOYMENT.md.

  7. Create a release-candidate Git tag.

  8. Record the full commit SHA.

For example:

git tag -a v1.0.0-rc.1 -m "Publication candidate"
git push origin v1.0.0-rc.1
git rev-parse v1.0.0-rc.1^{commit}

If the repository is private, confirm that the designated reviewers have access.

2. Submitting a Publication Request

Submit your request through the department-designated Student Project Lab publication request board.

The department will provide the submission link.

The request must include:

Project information

Release information

Architecture and operations

Do not include actual passwords or secret values.

Security information

Demonstration access

If the application requires authentication, explain how reviewers can test it.

Provide temporary demonstration credentials through a department-approved private communication channel, not a public GitHub issue.

3. Review Process

After submission, the request follows this process:

Initial screening: The department checks whether the submission is complete and suitable for the hosting environment.

Technical review: The reviewer verifies that the application can build, start, and operate using the documented deployment configuration.

Security review: The reviewer examines the applicable security requirements, including deployment settings, dependencies, authentication, authorization, and other relevant controls.

Review decision: The reviewer approves the release, requests changes, or rejects the publication request.

Deployment: An authorized department administrator deploys the approved revision.

Publication verification: The deployed application is checked for basic functionality, correct routing, HTTPS, and operational health.

Reviews may involve source-code inspection, automated scanning, application testing, and requests for clarification.

4. Responding to Review Findings

If changes are required, the reviewer will describe the findings and expected corrections.

Students must:

  1. Correct the identified problems.

  2. Run relevant tests again.

  3. Commit and push the corrections.

  4. Create a new release-candidate tag.

  5. Update the publication request with the new tag and commit SHA.

  6. Explain how the findings were addressed.

Example:

git tag -a v1.0.0-rc.2 -m "Security review corrections"
git push origin v1.0.0-rc.2

Do not overwrite or move the original release-candidate tag.

The reviewer will examine the revised version and determine whether additional changes are necessary.

5. Approval and Publication

Once the review is approved, the department records the approved commit and authorizes a production release.

For example:

Item Example
Candidate v1.0.0-rc.2
Approved release v1.0.0
Repository student/project-name
Deployment project-name.studentprojectlab.com

An authorized department process selects the approved Git commit or immutable build artifact for deployment.

Students do not need production server credentials or direct access to Coolify.

After publication, the department verifies the application and provides its public URL.

6. Updating a Published Application

To publish an updated version:

  1. Complete the updated code.

  2. Test the changes.

  3. Create a new release-candidate tag, such as v1.1.0-rc.1.

  4. Submit an update request referencing the existing application.

  5. Describe the changes and their security implications.

  6. Complete any required review.

  7. Wait for the department to deploy the approved release.

The department may use a reduced review process for low-risk changes, but all production updates require authorization.

If the update changes the database schema, the student must document migration requirements and potential rollback limitations.

7. Problems After Publication

Students must report discovered security vulnerabilities, exposed credentials, data loss, or serious application failures promptly through the designated private faculty or administrator contact.

Do not post active credentials, sensitive logs, vulnerability exploit details, or private user information in a public GitHub issue.

The department may temporarily disable the application while a problem is investigated.

Routine code corrections must follow the approved update procedure.

8. Publication Request Template

Copy this information into the designated publication request form if a structured form is not yet available.

Project

Project name:

Student(s):

Course or affiliation:

Project description:

Repository URL:

Requested subdomain:

Release

Release candidate tag:

Full commit SHA:

README URL:

Deployment instructions URL:

Tests completed and results:

Deployment

Framework/technology stack:

Required containers:

Application's internal HTTP port:

Database and storage requirements:

Environment variable names:

External service dependencies:

Estimated resource requirements:

Special initialization or migration instructions:

Security

Authentication and authorization approach:

Type of data stored:

Higher-risk features:

Security scans performed and results:

Known vulnerabilities or limitations:

Special permissions or infrastructure requirements:

Student Certification

9. After Your Application Is Published

Once your application is live, you may include its public URL in your portfolio, resume, or project documentation.

Keep the corresponding source-code repository available, subject to any course, research, or intellectual-property restrictions.

Students should monitor project issues and remain available to address significant security or operational problems during the approved hosting period.

Publication on Student Project Lab indicates that a specific version was accepted for hosting. It does not imply that the department endorses every statement, feature, or use of the application.