I'm learning programming at university and would like to keep my coding assignments, examples in different languages, screenshots, and written explanations in one organized place. Ideally, I'd like to build a timeline of my progress that could eventually work as a portfolio and show what I've learned. Can GitHub handle source code, Word or PDF documents, and images? If so, what repository structure and workflow would make sense?
4 Answers
A simple setup would be one repository for your learning portfolio, with folders grouped by course, language, or semester. Give each project its own folder containing the source code, a README.md explaining the goal and how to run it, and an images or output folder for screenshots. Use clear commits such as “add file parser” or “fix input validation,” and avoid committing passwords, API keys, or private coursework that you are not allowed to publish.
Yes, you can upload those files to a GitHub repository. Code and Markdown files work especially well because Git can show exactly what changed over time. Images and PDFs are also fine for modest-sized projects, but very large files or collections of textbook PDFs are better kept in cloud storage. Plan your folder structure and naming scheme early so the repository stays manageable.
I’d like it to document my progress almost like a small curriculum, so I’ll definitely need a consistent structure.
It can be part of a portfolio, but don’t treat a repository as a replacement for a polished portfolio website or professional profile. Publicly highlight your strongest projects with clear READMEs, screenshots, demonstrations, and explanations of what you learned. Keep routine exercises in a separate archive or private repository so visitors can quickly find the work that best represents your skills.
That makes sense. I want to preserve everything for my own progress, but only showcase the most complete projects publicly.
GitHub can store Word and PDF files, but Git is primarily designed for tracking changes in text files. A small edit to a binary document may require storing another full version, and GitHub usually cannot show a useful line-by-line comparison. For written assignments, consider using Markdown or LaTeX as the source and generating a PDF when needed. Keep the final PDFs and screenshots alongside the related code when they help explain the project.

That structure seems better than creating a separate repository for every tiny exercise. I could make separate repositories only for the larger projects I want to highlight.