{"id":23430642,"url":"https://github.com/jonprice99/sci-billboards","last_synced_at":"2026-04-16T08:31:32.429Z","repository":{"id":215150145,"uuid":"692158417","full_name":"jonprice99/sci-billboards","owner":"jonprice99","description":"Virtual billboards for the University of Pittsburgh's School of Computing and Information to field ideas, projects, suggestions, and feedback from students, staff, and faculty.","archived":false,"fork":false,"pushed_at":"2023-12-16T19:11:56.000Z","size":12256,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-15T08:44:09.680Z","etag":null,"topics":["django","feedback","ideas","mysql","nextjs","university-of-pittsburgh","webapp","website"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jonprice99.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-15T17:33:13.000Z","updated_at":"2024-01-02T18:04:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"38b67e95-fc9b-4d2b-904c-d386c4b66f4a","html_url":"https://github.com/jonprice99/sci-billboards","commit_stats":null,"previous_names":["jonprice99/sci-billboards"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonprice99%2Fsci-billboards","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonprice99%2Fsci-billboards/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonprice99%2Fsci-billboards/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jonprice99%2Fsci-billboards/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jonprice99","download_url":"https://codeload.github.com/jonprice99/sci-billboards/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248055271,"owners_count":21040151,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","feedback","ideas","mysql","nextjs","university-of-pittsburgh","webapp","website"],"created_at":"2024-12-23T09:46:14.829Z","updated_at":"2026-04-16T08:31:27.409Z","avatar_url":"https://github.com/jonprice99.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).\n\n# SCI Idea Board\n## \u003ca name=\"background\"\u003e\u003c/a\u003e Background\nThis is a web app developed for the University of Pittsburgh's School of Computing and Information, which is designed to replace the physical feedback boards located on campus in an effort for SCI to better field, analyze, \u0026 implement feedback from students, staff, and faculty. This project was initially developed by Shresta Kalla ([@shresta-kalla](https://github.com/shresta-kalla)), Brian Kim ([@briankim-pitt](https://github.com/briankim-pitt)), \u0026 Jonathan Price ([@jonprice99](https://github.com/jonprice99)) under the supervision of Matt de Lima Barbosa ([@drummondpitt](https://www.github.com/drummondpitt)) \u0026 Luis Oliveira ([@luisfnqoliveira](https://github.com/luisfnqoliveira)) for the Fall 2023 CS/CompBio Group Project Capstone (CS1980).\n\n## \u003ca name=\"requirements-and-dependencies\"\u003e\u003c/a\u003e Core Requirements \u0026 Dependencies\n**Please ensure the following are installed \u0026 ready before proceeding:**\n- Python 3.10\n- Django 4.2.5\n- Node.js 6.9.0\n- Next.js 14\n- MySQL Database *(Please ensure that it has all underlying tables with the schema defined in `./billboard/BillboardAPI/models.py` is accessible prior to running this project.)*\n\nTo install additional dependencies related to the Django database API:\n```bash\n# from the project root directory\npip install -r requirements.txt\n```\n\nTo install additional dependencies related to the Next.js web app:\n```bash\n# from the project root directory\nnpm install\n```\n\nTo install the virtual environment for the Django database API:\n```bash\n# from the project root directory\npython3 -m venv myenv\n```\n\n## \u003ca name=\"getting-started-development\"\u003e\u003c/a\u003e Getting Started for Development\n\nTo run the virtual environment for the Django database API:\n```bash\n# from the project root directory (using Powershell)\n./myenv/Scripts/Activate.ps1\n\n# if on macOS/Linux: source myenv/bin/activate\n```\n\n_Should you need to deactivate the virtual environment:_\n```bash\n# from any folder while the virtual environment is running\ndeactivate\n```\n\nTo run the back-end development server for the Django database API from the project root folder:\n```bash\n# starting from the project root directory\ncd billboard\npython manage.py runserver\n\n# Note: Database connection settings are found in: ./billboard/billboard/settings.py\n```\n\nTo run the front-end development server for the Next.js web app:\n\n```bash\nnpm run dev\n```\n\nOpen [http://localhost:3000](http://localhost:3000) with your browser to see the homepage.\n\nThis project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Rubik \u0026 Open Sans, fonts affiliated with the University of Pittsburgh, from Google Fonts.\n\n## \u003ca name=\"next-development-overview\"\u003e\u003c/a\u003e A Rough Overview for Development with Next.js\nThis web app is built with Next.js 14, a framework that extends React.js and further enhances its capabilities. To get more in-depth info about Next, check [Learn More About Next.js](#learn-more-nextjs) for documentation and tutorial links. However, here are some rough overviews of the topics you may need to know for future/continued development:\n\n### The App Router \u0026 Components\nThe app router is a new paradigm for building applications using React's latest features which enables greater modularity with CSS and components on a page-by-page level. This app router also better enables accessing parameters passed in from the URL for navigation and processing. All parts of the front-end web app such as pages, CSS formatting modules, JavaScript functions, \u0026 etc., live in the `./app` directory. Each page can have its own independent CSS styling that can be imported from the appropriate `.module.css` file of your choosing. The `./app/components` directory holds functions and web page parts (i.e., headers, footers, grids, etc.) that can then be used on multiple pages by imported and called within a return statement of a `.js` or `.jsx` file. *(To see an example of this, check out how `./app/layout.js` references './app/components/Header.jsx' by importing `Header` and referencing `\u003cHeader /\u003e` in the return statement.)*\n\n### The Homepage \u0026 Use of layout.js\nThe file `./app/layout.js` is where any elements and/or CSS you wish to have present across **all pages** in the web app will live and be referenced/pulled from (i.e., headers, footers, global CSS formatting). The file `./app/page.js` is the homepage of the whole web app and it **does not** need to be located in a subdirectory of `./app`, unlike other pages in the web app.\n\n### Adding New Pages to the Web App\n**If you wish to have a page with a static URL:** You must create a subdirectory within the `./app` directory. This subdirectory's name will be used for the URL to that page, so it is best to be mindful of typical URL naming conventions \u0026 guidelines when you are naming it. The `.js` or `.jsx` file you create in that subdirectory to be the appropriate webpage for that URL **must** be named `page.jsx` for the Next.js App Router to recognize it as a webpage to be returned rather than a component. *(To see an example of this, check out `./app/login` and its related `page.jsx` file.)*\n\n**If you wish to have a page with a dynamic URL:** Like with pages that use a static URL, you **must** create a subdirectory within the `./app` directory. Additionally, you **must** surround the name, at the least, with square brackets (e.g., `./app/[example]`). This will enable any value entered into the URL in that route to be handed into the router as an argument/parameter. *(To see an example of this, check out `./app/[category]` and its related `page.jsx` file)* If you wish to see more mutations of how this function of the Next.js App Router works, check out the following sections of their documentation:\n- [Next.js Dynamic Routes (Catch-all Segments)](https://nextjs.org/docs/app/building-your-application/routing/dynamic-routes#catch-all-segments)\n- [Next.js Dynamic Routes (Optional Catch-all Segments)](https://nextjs.org/docs/app/building-your-application/routing/dynamic-routes#optional-catch-all-segments)\n\n### Adding Additional Assets\nIf you wish to have custom images, files, \u0026 etcetera as assets in the web app, place them in the `./public` directory, then import them into the appropriate `page.jsx` file for whichever webpage you wish to have it present in. *(For an example of this, check out how `./app/components/Home_Center.jsx` imports and references the files `Shield_White.png` and `Shield_Black.png` from the `./public` directory.)*\n\n## \u003ca name=\"django-development-overview\"\u003e\u003c/a\u003e A Rough Overview for Development with Django\nThis web app uses the Django REST framework for Python to build out an API for accessing and modifying the database which houses information related to the web app's core functionality (i.e., feedback categories, posts, users, etc). If you wish to learn more about Django, you can do so using the official website [here](https://www.django-rest-framework.org/).\n\n### Adding a New Table to the Model\nFirst, add a new serializer to `./billboard/BillboardAPI/serializers.py` similar to those that are premade in the file already. Then, add the definition of the table in accordance with its established schema in the database in `./billboard/BillboardAPI/models.py` in a similar fashion to those that are already defined in the file.\n\n### Adding New API Endpoints\nFirst, add and define the view/function to `./billboard/BillboardAPI/views.py` in a similar style to those that are already defined in the file. Then, add and define the URL path that will be used to perform a fetch from the Next.js front-end in `./billboard/BillboardAPI/urls.py` in a similar format to those that are already defined in the file.\n\n## \u003ca name=\"learn-more-nextjs\"\u003e\u003c/a\u003e Learn More About Next.js\n\nTo learn more about Next.js, take a look at the following resources:\n\n- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.\n- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.\n\nYou can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!\n\n## \u003ca name=\"deployment\"\u003e\u003c/a\u003e Deployment\n\nThe easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template\u0026filter=next.js\u0026utm_source=create-next-app\u0026utm_campaign=create-next-app-readme) from the creators of Next.js. However, there are several other deployment options that you may consider and use (i.e., self-hosting).\n\nCheck out [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details on deployment.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonprice99%2Fsci-billboards","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonprice99%2Fsci-billboards","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonprice99%2Fsci-billboards/lists"}