{"id":29615450,"url":"https://github.com/paasshme/portfolio","last_synced_at":"2026-04-14T23:33:02.105Z","repository":{"id":113426356,"uuid":"333089240","full_name":"paasshme/Portfolio","owner":"paasshme","description":"Highly-customizable web based portfolio using Flask framework.","archived":false,"fork":false,"pushed_at":"2022-09-16T16:01:15.000Z","size":4713,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-08-28T21:55:47.633Z","etag":null,"topics":["flask","sqlalchemy","sqlite","website"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paasshme.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null}},"created_at":"2021-01-26T13:12:26.000Z","updated_at":"2021-03-15T17:32:05.000Z","dependencies_parsed_at":"2023-07-02T23:15:32.611Z","dependency_job_id":null,"html_url":"https://github.com/paasshme/Portfolio","commit_stats":null,"previous_names":["paasshme/portfolio"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/paasshme/Portfolio","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paasshme%2FPortfolio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paasshme%2FPortfolio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paasshme%2FPortfolio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paasshme%2FPortfolio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paasshme","download_url":"https://codeload.github.com/paasshme/Portfolio/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paasshme%2FPortfolio/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31819727,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T18:05:02.291Z","status":"ssl_error","status_checked_at":"2026-04-14T18:05:01.765Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["flask","sqlalchemy","sqlite","website"],"created_at":"2025-07-21T00:03:27.966Z","updated_at":"2026-04-14T23:33:02.087Z","avatar_url":"https://github.com/paasshme.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Portfolio\n\nHighly customisable and easy to update web based portfolio.  \nThe aim of this project is to provide an out of the box portfolio to present project, ideas... in an easy way.The project uses Flask framework, with jinja2 templates for rendering and sqlite3/postgresql for the data storage.  \n\n### Usage\n\nYou can set up your profile with the `config.toml` file and then add your project on the `/add/` route.\nIn order to create a project you must provide a name, a description, a link to source code and a thumbnail. At every moment you can update or delete a project by using `/update/` and `/delete/`. Once the project is created it can be seen on the `/projects/` page by every visitor.  \nIn this way, it will be easy to just add new project by using a web interface, instead of modifying the code base.\nThis project is made to be set up once and then add the projects later on. By the time you will have released new project, you can simply add them on the portfolio.  \n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"readme_res/pef.gif\" width=700\u003e \n\u003c/p\u003e\n\n### Customization:\n\nThis project is made to be easily customizable, just fill in your data in the `config.toml`.\nExample:\n```toml\n[data]\nfirstname=\"YourFirstName\"\nlastname=\"YourLastName\"\nage=18\nlanguages=[ \"English\", \"German\"]\nother=[ \"Driving licence\", \"...\"]\ndegree=[]\nskills=[\"Javascript\", \"Python\", \"Java\", \"C#\"]\nhobbies=[\"Developping\", \"Designing\", \"Deploying\"]\ngithub=\"GithubPseudo\"\nlinkedin=\"LinkedinUsername\"\ncv=\"url\"\npp=\"link to your awesome profile picture\"\n\n```\n\n### Set up and run (dev/local):\n```\npython3 -m venv .\n. venv/bin/activate\npip install -r requirements.txt\nexport FLASK_APP=view.py\n# If you want to use the default database let PEF_DB env var empty. (using sqlite3)\n# If no put your psql connection string in PEF_DB\nexport PEF_DB=insert_psql_connection_string\nflask run\n```\n\n### Host:\n\nThe project can be host on heroku, using the Procfile and gunicorn.  \nSee [heroku_set_up.md](heroku_set_up.md) for installation.\n\n\nYou can also selfhost using docker-compose. (see `docker-compose.yml`)  \n```docker-compose up```  \nThe web app wll be available on 0.0.0.0 (on port 80)\nand the database on localhost (port 5432)\n\n### Routes:\n\nThe project is by default launched on localhost on port 5000.  \n**Main page: (Information about the person)**  \n`/`  \n**To display the existing projects:**  \n`/projects/`   \n**To access the following commands**  \n`/login/`  \n**To add a project:**  \n`/add/`  \n**To delete one or several projects:**  \n`/delete/`  \n**To update a project:**  \n`/update/`\n\n\n\n### Project structure\n\u003cpre\u003e\n.  \n├── \u003cb\u003ereadme_res/\u003c/b\u003e: readme ressources (screenshot)  \n├── \u003cb\u003estatic/\u003c/b\u003e:  images, icons, and css,js files  \n├── \u003cb\u003etemplates/\u003c/b\u003e: jinja2 templates files (html and python)  \n└── \u003cb\u003e/\u003c/b\u003e: python app files:  \n   ├── \u003cb\u003emodels.py\u003c/b\u003e: SQLAlchemy tables using python class  \n   ├── \u003cb\u003eapp.py\u003c/b\u003e: Flask configuration file \n   ├── \u003cb\u003eview.py\u003c/b\u003e: Flask routing files handling database operations  \n   └── \u003cb\u003egdrive_management.py\u003c/b\u003e: Google drive api connection and operations\n    Scripts:\n   ├── \u003cb\u003erun.sh\u003c/b\u003e: bash script used to launch the project with python venv  \n   ├── \u003cb\u003emanage_user.py\u003c/b\u003e: python script to handle users (add, list, remove)\n   └── \u003cb\u003eresetdb.py\u003c/b\u003e: standalone script to remove project_images and database content\n   Deploy\n   ├── \u003cb\u003eProcfile\u003c/b\u003e: heroku file to run gunicorn on their dynos\n   ├── \u003cb\u003eDockerfile\u003c/b\u003e: docker build for the web (flask) application\n   └── \u003cb\u003edocker-compose.yaml\u003c/b\u003e: compose specification for host with container\n   Others\n   ├── \u003cb\u003econfig.toml\u003c/b\u003e: user data to fill index page\n   └── \u003cb\u003erequirements.txt\u003c/b\u003e: pip dependencies of the app\n   \n\n\u003c/pre\u003e\n\n\n### Technical implementation\n\nThis project uses sqlite3/psql with the python SQLAlchemy ORM with two different tables.\nA project represents the unit of the application, a project has a name, a description, an url (for the code repository mainly) and a thumbnail. \n\n| Project        | Description                                                  | Type           |\n|----------------|--------------------------------------------------------------|----------------|\n| id             | Id of the project (primary key)                              | auto indent PK |\n| project_name   | Name of the project                                          | String(200)    |\n| project_desc    | Short description that is displayed on the `/projects/` page | Text           |\n| project_url    | Url used in the \"more details\" in `/projects/`         | String(300)    |\n| project_thumbnail | Thumbnail for the project in the `/projects/` page  | String(300) |\n\n### TODO:  \n- [x] Docker compose  :exclamation:\n- [x] Main page customization\n- [x] Create admin page (merging add.html and upload.html could be a great start)\n- [x] Optimise css :exclamation:\n- [x] Optimise js :exclamation:\n- [x] Secure Authentification\n- [ ] Docker compose: enhance security\n- [ ] Mobile responsive\n- [ ] write heroku_set_up.md\n\nFor project progress see: https://trello.com/b/ctrkfRUm/pef\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaasshme%2Fportfolio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaasshme%2Fportfolio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaasshme%2Fportfolio/lists"}