{"id":23043306,"url":"https://github.com/theodorosploumis/drupal-report","last_synced_at":"2025-08-14T23:30:45.181Z","repository":{"id":151061720,"uuid":"103414072","full_name":"theodorosploumis/drupal-report","owner":"theodorosploumis","description":"How to estimate the costs and time needed to fix issues or provide a RFP on a Drupal website you did not develop.","archived":false,"fork":false,"pushed_at":"2025-01-27T15:50:31.000Z","size":191,"stargazers_count":8,"open_issues_count":2,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-03T02:35:19.751Z","etag":null,"topics":["drupal","drupal-developers","drupal-report","estimation","hacktoberfest","reports","request-for-proposal","rfp"],"latest_commit_sha":null,"homepage":"","language":null,"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/theodorosploumis.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":"2017-09-13T15:01:33.000Z","updated_at":"2025-03-30T23:45:20.000Z","dependencies_parsed_at":"2024-07-06T17:05:43.718Z","dependency_job_id":null,"html_url":"https://github.com/theodorosploumis/drupal-report","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/theodorosploumis/drupal-report","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorosploumis%2Fdrupal-report","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorosploumis%2Fdrupal-report/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorosploumis%2Fdrupal-report/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorosploumis%2Fdrupal-report/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theodorosploumis","download_url":"https://codeload.github.com/theodorosploumis/drupal-report/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theodorosploumis%2Fdrupal-report/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270499866,"owners_count":24595146,"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","status":"online","status_checked_at":"2025-08-14T02:00:10.309Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["drupal","drupal-developers","drupal-report","estimation","hacktoberfest","reports","request-for-proposal","rfp"],"created_at":"2024-12-15T20:46:57.748Z","updated_at":"2025-08-14T23:30:45.153Z","avatar_url":"https://github.com/theodorosploumis.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Drupal fixes \u0026 changes Report, RFP tips\n\nSee also [theodorosploumis/drupal-best-practices](https://github.com/theodorosploumis/drupal-best-practices).\n\n\u003e How to estimate the costs and time needed to fix issues or make changes to a Drupal website that you did not develop!\n\u003e Before giving a proposal (RFP) you need to inspect the site! But inspecting a Drupal site is not as simple as you believe...\n\u003e Here is a **basic checklist** of the Report that you need to deliver before doing anything on the site.\n\nSee and **example of a report on [example-report.md](https://github.com/theodorosploumis/drupal-report/blob/master/example-report.md)**.\n\n### Before the Report needs\n- [ ] **Technical specification document** (if exists).\n- [ ] Current **Process flow diagram** (in case the system communicates with other services)\n- [ ] **Drupal admin credentials** (user 1, or Admin role account). This is needed to check the existing structure, functionality, modules etc. Normally there whould be a dev subdomain to log in. If not credentials and demo provided ask for the git code and a dumb database to install the project locally.\n- [ ] A **brief of the project scope**.\n- [ ] What are the **project goals** (eg register new members)? How do they measure them? Do they currently meet the goals?\n- [ ] What happened with the previous Developer/Company (and there is no collaboration anymore)?\n- [ ] **Why the site needs the changes** (fixes, update, upgrate, migration etc)?\n- [ ] **How much time needed to build the project?**\n- [ ] Will there be a **new Skin** (or theme, template whatever they call it)?\n- [ ] What are the **things that do not work well** now and they would like to improve?\n- [ ] How many **different Authors** are currently adding content?\n- [ ] How many **different User Roles** exist (eg Anonymous, Member, Pro Member etc)? Which are each Role permissions on the project? Can we simplify any process for the users?\n- [ ] **How many Drupal nodes** (you can name it as \"pages\") are currently on the database?\n- [ ] Will we need a **data migration**? If so, are there any content entry fields we need to remove or any new we need to add?\n- [ ] Are there any (high) **payments to 3rd party services** that we can avoid? Eg a CDN.\n- [ ] Who is going to **support the project** technically (Drupal updates, security issues, technical support)? Remember to provide a yearly Support subscription with specific tasks on the contract.\n- [ ] **Where is the project hosted** now? What are the needs for Database, PHP etc? Are there any special software used? Offer to move to a new hosting provider if current does not fit us. For big customers offer Drupal cloud based solutions (Acquia, Pantheon etc).\n\nOther (not so important but could be important)\n- [ ] Hosting credentials (to check server/system details, tools installed etc that are special for the project to work).\n- [ ] Other services credentials (eg CDN, SSL provider, Google Analytics etc) that are used.\n\n### Common Reports\n- [ ] Site performance (use well known services such as [PageSpeed](https://developers.google.com/speed/pagespeed/insights), [gtmetrix](https://gtmetrix.com) and [yellowlab.tools](https://yellowlab.tools))\n- [ ] SEO (Does the project follow the basic SEO rules?)\n- [ ] Mobile UX and design (does it work well on small screens?)\n- [ ] Heatmap reports (eg using tools like [Hotjar](https://www.hotjar.com))\n- [ ] Security issues reports (eg using [hackertarget.com/drupal-security-scan](https://hackertarget.com/drupal-security-scan/), [securityheaders.com](https://securityheaders.com/), [sitecheck.sucuri.net](https://sitecheck.sucuri.net/))\n\n### Drupal specific Reports\n- [ ] Drupal content Structure (Content types, taxonomy etc)\n- [ ] What is the main functionality (Features and Functionality, F\u0026F) provided (eg login, register, add comments, share content etc)\n- [ ] Drupal forms\n- [ ] How many different pages are there\n- [ ] Is there a mobile verison of the website or responsive css styles\n- [ ] Usage of special modules (eg Panels, Features, Context, Paragraphs, php etc)\n- [ ] Drupal user Roles\n- [ ] Create 1 demo user for each Drupal Role and get into the site to inspect functionality (take screenshots, investigate bad UX etc). Alternatively you can use [masquerade](https://www.drupal.org/project/masquerade) to become another user)\n- [ ] Drupal best practices\n- [ ] Theming (uses ds, template files, preprocess functions, field layout, panels, patternlab etc)\n- [ ] Total modules enabled\n- [ ] Modules that should not be used\n- [ ] Modules that should be used\n- [ ] (Security) Updates\n- [ ] Views best practices\n- [ ] Menus and navigation\n- [ ] Text filters and editors\n- [ ] Block types and block structure\n- [ ] Multilingual behavior\n- [ ] PHP and server settings (eg using a high php memory limit, not protected settings file etc)\n\n### What to deliver\n- [ ] A **pdf** of the report (use Google Docs to create the official report)\n- [ ] Include images/screenshots when needed to explain the text\n- [ ] **Propose changes** with details for every aspect that need to change\n- [ ] **Include prices and timesheet** for every change mentioned\n- [ ] An **invoice of 10hr - 100hr working** (the working hours depend on the size of the site)\n\nExample [report here](example-report.md).\n\n### Useful Drupal modules\n\n- [quant (7.x)](https://www.drupal.org/project/quant)\n- [content_report (7.x)](https://www.drupal.org/project/content_report)\n- [panels_pane_report (7.x)](https://www.drupal.org/project/panels_pane_report)\n- [systeminfo (7.x)](https://www.drupal.org/project/systeminfo)\n- [forena (7.x, 8.x)](https://www.drupal.org/project/forena)\n- [erd (7.x, 8.x)](https://www.drupal.org/project/erd)\n- [unused_modules (7.x, 8.x)](https://www.drupal.org/project/unused_modules)\n- [site_audit (7.x, 8.x)](https://www.drupal.org/project/site_audit)\n- [security_review (7.x, 8.x)](https://www.drupal.org/project/security_review)\n- [seckit (7.x, 8.x)](https://www.drupal.org/project/seckit)\n- [seo_checklist (7.x, 8.x)](https://www.drupal.org/project/seo_checklist)\n- [prod_check (7.x, 8.x)](https://www.drupal.org/project/prod_check)\n- [content_type_report (8.x)](https://www.drupal.org/project/content_type_report)\n- [entities_info (8.x)](https://www.drupal.org/project/entities_info)\n- [entitiesinfo (8.x)](https://www.drupal.org/project/entitiesinfo)\n- [field_report (8.x)](https://www.drupal.org/project/field_report)\n- [entity_reports (8.x)](https://www.drupal.org/project/entity_reports)\n- [site_complexity (8.x)](https://www.drupal.org/project/site_complexity)\n- [documentation_export (8.x)](https://www.drupal.org/project/documentation_export)\n- [plugin (8.x)](https://www.drupal.org/project/plugin)\n- [entity_relationship (8.x)](https://github.com/skilld-labs/entity_relationship)\n- [dependency_visualizer (8.x)](https://www.drupal.org/project/dependency_visualizer)\n- [entity_dependency_visualizer (8x)](https://www.drupal.org/project/entity_dependency_visualizer)\n- [upgrade_check (6.x, 7.x - obsolete)](https://www.drupal.org/project/upgrade_check)\n- [d8_migration_check (7.x - obsolete)](https://www.drupal.org/project/d8_migration_check)\n- [migration_audit_reports (7.x)](https://www.drupal.org/project/migration_audit_reports)\n- [mglaman/drupal-check](https://github.com/mglaman/drupal-check)\n- [field_tools (8.x)](https://www.drupal.org/project/field_tools)\n- [entity_mesh, 10x](https://www.drupal.org/project/entity_mesh)\n\n### Drupal Console commands\n\nhttps://drupalconsole.com/docs/en/commands\n\n- drupal field:info\n- drupal debug:\\*\n\n### Scripts to generate software report\n\n- https://github.com/theodorosploumis/generate_drupal_report\n\n### My thoughts\n- Avoid giving an estimate/proposal before making a site Report.\n- Do not start the Report before getting the credentials or a demo.\n- Try to find out what does the website mean for the owner (eg if it is the main income source).\n- If able propose to fix one thing at a time using agile methodology and get paid by the hour.\n- Tell your customer that this Report is like a Doctor diagnosis and that it can be used for future tasks.\n- Do not forget to include costs such as for copying the site/db, creating a dev environment, uploading changes to live environment (eg usage of features module) etc.\n- After the Report, avoid touching projects that are not well structured and do not follow (Drupal) best practices!\n- Avoid expressing negative for other Companies/Developers (talk about the site and not about the people that were involved).\n- Such projects are good to \"learn\" new things and other people practices (educational projects).\n\n### Useful resources\n- [Drupal Audit Guide](https://github.com/axelerant/engineering/blob/main/audit.md)\n- [Slide, Auditing Drupal Sites](https://www.slideshare.net/exove/auditing-drupal-sites)\n- [The Gizra way pricing method](https://gist.github.com/theodorosploumis/826412bb5f2dd0aadf2728f950ffa225)\n- [Palantir Build Spec 1.0 - Google Sheets](https://docs.google.com/spreadsheets/d/15htLLWLguhwiuTLg_nndQNpgWVdUMy6UaR_d1q-v6iw/edit#gid=0)\n- [Drupal Early Estimation Sheet Template (version 3, Feb 2011) - Google Sheets](https://docs.google.com/spreadsheets/d/13MGHIxFOtbJ2Qxygc_GxKzxqghLiK1-7YgNiq95ypWE/edit?hl=en#gid=0)\n- [Drupal Spec Tool v2.0.0 (current) - Google Sheets](https://docs.google.com/spreadsheets/d/1h-SieCV9Dtrj8F4bqMvsbcHwIibN30j2oR9FMRDFT-8/edit#gid=0)\n- [Drupal Estimation Techniques by Project Managers](https://www.slideshare.net/jakobpersson/drupal-estimation-techniques-by-project-managers)\n- [Drupal fixed budget projects : the art of estimates](https://www.slideshare.net/MaximeTopolov/drupal-fixed-budget-projets-the-art-of-estimates)\n- [How Big, How Long, How Much: Estimating Drupal Project Size, Duration, and Cost - YouTube](https://www.youtube.com/watch?v=cIrdqyw0tvc)\n- [How we estimate our Drupal web development projects - Internetdevels](https://internetdevels.com/blog/how-we-estimate-drupal-web-development-projects)\n- [Estimating Drupal Projects | Metal Toad](https://www.metaltoad.com/blog/estimating-drupal-projects)\n- [Are we afraid to estimate our work in Drupal and open source? - Drupal Webform Estimation Open Source](https://www.jrockowitz.com/blog/estimation)\n- [10 problems with Web Development Projects and how we've solved them](https://www.freelock.com/newsletter/10-problems-web-development-projects-and-how-weve-solved-them)\n- [EvolvingWeb.ca: Writing an RFP for Web Development and Design](https://evolvingweb.ca/blog/writing-rfp-web-development-and-design)\n- [Video, DrupalCon New Orleans 2016: Let's be honest: Estimation is guessing](https://www.youtube.com/watch?v=rcYYOquSk-Y)\n- [Video, DrupalCon Vienna 2017: Estimates are dead, long live forecasting!](https://www.youtube.com/watch?v=_pxWPGYRLDA)\n- [Video, DrupalCon Denver 2012: NO RFPS! WHY REQUESTS FOR PROPOSALS ARE BAD FOR BUSINESS](https://www.youtube.com/watch?v=25ii8fNisP4)\n- [Video, Bay Area Drupal Camp 2015: How to do a Site Audit](https://www.youtube.com/watch?v=ZLTlJ_6aYGQ)\n- [Video, DrupalCon New Orleans 2016: How to audit Drupal Sites for performance, content and best practices](https://www.youtube.com/watch?v=A0XCRETqfYk)\n- [Video, How to audit Drupal Sites for performance, content and best practices, 2016](https://www.youtube.com/watch?v=EXIV6CxdseQ)\n- [Video series - Estimation in Drupal Projects, Drupalize.me](https://drupalize.me/videos/estimation-drupal-projects?p=2203)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheodorosploumis%2Fdrupal-report","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheodorosploumis%2Fdrupal-report","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheodorosploumis%2Fdrupal-report/lists"}