├── LICENSE ├── README.md └── how-to-succeed-in-freelancing-as-freelance-developer.md /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Awesome Freelance Developer Resources 2 | [![Awesome](https://awesome.re/badge-flat2.svg)](https://awesome.re) 3 | 4 | A comprehensive collection dedicated to empowering freelance developers. This curated list brings together essential tools, cutting-edge technologies, and invaluable tips, covering aspects from project management and client communication, to coding tools, and business growth strategies. Designed for both budding and seasoned freelancers, it's your ultimate guide for navigating the freelance development landscape with confidence and skill. Dive into a world where productivity meets creativity, and elevate your freelance career to new heights. 5 | 6 | ## Table of Contents 7 | 1. [Getting Started As Freelance Developer](#getting-started-as-freelance-developer) 8 | 2. [Common Freelance Developer Position](#common-freelance-developer-position) 9 | 3. [Freelance Website](#freelance-website) 10 | 4. [Tools for Freelance Developer](#tools-for-freelance-developer) 11 | 5. [Gadgets for Freelance Developer](#gadgets-for-freelance-developer) 12 | 6. [Must-Know Legal Aspects for Freelance Developer](#must-know-legal-aspect-for-freelance-developer) 13 | 7. [Community for Freelance Developer](#community-for-freelance-developer) 14 | 8. [Learning and Skill Development](#learning-and-skill-development) 15 | 9. [Data about Freelance Developer](#data-about-freelance-developer) 16 | 17 | ## Getting Started As Freelance Developer 18 | Check on [How to Succeed in Freelancing](https://github.com/digital-marketing-engineer/awesome-freelance-developer-resources/blob/main/how-to-succeed-in-freelancing-as-freelance-developer.md) for comprehensive guide to start your career as freelance developer. 19 | 20 | ## Common Freelance Developer Position 21 | This list will help you to decide and choose which skill and tech stack that you need to focus on. It is ranked from the most commonly sought position to the niche position. 22 | 23 | 1. **[Freelance Full-Stack Developer](https://www.coursera.org/articles/full-stack-developer)** - Skilled in both front-end and back-end technologies, capable of handling entire web development processes. 24 | 25 | 2. **[Freelance Front-End Developer](https://www.coursera.org/articles/front-end-developer)** - Specializes in creating the user interface and experience of a web application using HTML, CSS, and JavaScript frameworks. 26 | 27 | 3. **[Freelance Back-End Developer](https://www.coursera.org/articles/back-end-developer)** - Focuses on server-side development, database management, and application logic using languages like Python, Ruby, or PHP. 28 | 29 | 4. **[Freelance Web Developer](https://www.coursera.org/articles/web-developer)** - General web development skills, often including both front-end and back-end development. 30 | 31 | 5. **[Freelance Mobile App Developer](https://www.coursera.org/articles/mobile-app-development)** - Develops mobile applications for platforms like iOS and Android, using Swift, Kotlin, or cross-platform technologies. 32 | 33 | 6. **[Freelance JavaScript Developer](https://www.toptal.com/javascript/job-description)** - Specializes in JavaScript programming, including frameworks and libraries like React, Angular, or Node.js. 34 | 35 | 7. **[Freelance Python Developer](https://www.coursera.org/articles/python-developer)** - Skilled in Python, often used for web development, scripting, data analysis, and machine learning. 36 | 37 | 8. **[Freelance Java Developer](https://www.coursera.org/specializations/java-fullstack)** - Focuses on Java development, suitable for enterprise-level applications, Android apps, and large systems. 38 | 39 | 9. **[Freelance PHP Developer](https://www.toptal.com/php/job-description)** - Expertise in PHP, commonly used for web development and server-side scripting. 40 | 41 | 10. **[Freelance React Developer](https://www.coursera.org/articles/react-developer)** - Specializes in the React JavaScript library for building user interfaces, particularly for single-page applications. 42 | 43 | 11. **[Freelance Ruby on Rails Developer](https://www.indeed.com/career/ruby-on-rails-developer)** - Skilled in Ruby and the Rails framework, known for rapid development of web applications. 44 | 45 | 12. **[Freelance WordPress Developer](https://www.coursera.org/articles/wordpress-developer)** - Specializes in creating and customizing websites and blogs using WordPress. 46 | 47 | 13. **[Freelance iOS Developer](https://www.toptal.com/ios/job-description#:~:text=An%20iOS%20developer%20is%20responsible,%3A%20Objective%2DC%20or%20Swift.)** - Develops applications for Apple's iOS devices using Swift or Objective-C. 48 | 49 | 14. **[Freelance Android Developer](https://www.toptal.com/android/job-description)** - Builds applications for Android devices using Java or Kotlin. 50 | 51 | 15. **[Freelance C# Developer](https://www.freelancermap.com/blog/what-does-c-developer-do/)** - Skilled in C#, often used for developing Windows applications, games (using Unity), and enterprise software. 52 | 53 | 16. **[Freelance UX/UI Developer](https://intellipaat.com/blog/who-is-ui-ux-developer/)** - Focuses on user experience and user interface design, ensuring applications are both functional and appealing. 54 | 55 | 17. **[Freelance Data Scientist](https://www.coursera.org/articles/what-is-a-data-scientist)** - Specializes in data analysis, machine learning, and statistical modeling, often using Python or R. 56 | 57 | 18. **[Freelance Game Developer](https://www.coursera.org/articles/game-developer)** - Develops video games for various platforms, skilled in game design, programming, and graphics. 58 | 59 | 19. **[Freelance Node.js Developer](https://anywhere.epam.com/en/node-js-developer-job-description)** - Specializes in using Node.js for server-side scripting and building scalable network applications. 60 | 61 | 20. **[Freelance Angular Developer](https://www.starkflow.co/blog/what-does-an-angular-developer-do)** - Focuses on developing applications using the Angular framework for dynamic web apps. 62 | 63 | 21. **[Freelance Shopify Developer](https://www.charleagency.com/articles/what-is-a-shopify-developer/)** - Specializes in developing and customizing online stores using Shopify's eCommerce platform. 64 | 65 | 22. **[Freelance .NET Developer](https://www.jobstreet.co.id/career-advice/role/dot-net-software-developer)** - Skilled in Microsoft's .NET framework, used for a wide range of applications. 66 | 67 | 23. **[Freelance SQL Developer](https://www.oracle.com/id/database/sqldeveloper/)** - Specializes in SQL database management, design, and development. 68 | 69 | 24. **[Freelance Laravel Developer](https://www.talentlyft.com/en/resources/php-laravel-developer-job-description)** - Expertise in the Laravel PHP framework, known for elegant syntax and robust features. 70 | 71 | 25. **[Freelance Machine Learning Engineer](https://www.wgu.edu/career-guide/information-technology/machine-learning-engineer-career.html)** - Focuses on developing systems and algorithms that can learn and make predictions, often using Python. 72 | 73 | 26. **[Freelance Vue.js Developer](https://www.ziprecruiter.com/Career/VUE-Developer/What-Is-How-to-Become)** - Specializes in the Vue.js framework for building user interfaces and single-page applications. 74 | 75 | 27. **[Freelance Swift Developer](https://www.adaface.com/job-descriptions/swift-developer-job-description/)** - Develops native iOS and macOS applications using Swift, Apple's powerful programming language. 76 | 77 | 28. **[Freelance Drupal Developer](https://befused.com/drupal/developer/?external_link=true)** - Focuses on creating and managing content-driven websites using the Drupal CMS. 78 | 79 | 29. **[Freelance Magento Developer](https://chudovo.com/magento-developer/)** - Expert in developing and customizing eCommerce solutions using the Magento platform. 80 | 81 | 30. **[Freelance Django Developer](https://www.educative.io/path/become-a-django-developer)** - Specializes in Python's Django framework for rapid development of secure and maintainable websites. 82 | 83 | 31. **[Freelance Kubernetes Engineer](https://nofluffjobs.com/log/work-in-it/what-characterizes-the-work-of-a-kubernetes-developer/)** - Skilled in container orchestration using Kubernetes, enhancing application deployment and scalability. 84 | 85 | 32. **[Freelance Blockchain Developer](https://www.edureka.co/blog/how-to-become-blockchain-developer/)** - Develops blockchain applications, smart contracts, and working on decentralized technologies. 86 | 87 | 33. **[Freelance AR/VR Developer](https://skillcrush.com/tech-jobs/ar-vr-developer/)** - Focuses on developing Augmented Reality and Virtual Reality experiences and applications. 88 | 89 | 34. **[Freelance Cloud Engineer](https://www.techtarget.com/searchcloudcomputing/definition/cloud-engineer)** - Specializes in cloud computing platforms like AWS, Azure, or Google Cloud Platform. 90 | 91 | 35. **[Freelance DevOps Engineer](https://www.atlassian.com/devops/what-is-devops/devops-engineer)** - Integrates development and operations for faster and more efficient project lifecycles. 92 | 93 | 36. **[Freelance IoT Developer](https://logicsimplified.com/newgames/what-exactly-does-developers-of-the-internet-of-things-do/)** - Develops applications and solutions for the Internet of Things (IoT) devices and systems. 94 | 95 | 37. **[Freelance React Native Developer](https://www.indeed.com/career-advice/finding-a-job/how-to-become-react-native-developer)** - Builds cross-platform mobile apps using the React Native framework. 96 | 97 | 38. **[Freelance Electron Developer](https://www.trio.dev/blog/electron-development-guide#:~:text=Visual%20Studio%20Code.-,What%20is%20an%20Electron%20Developer%3F,writing%20backend%20logic%20using%20JavaScript.)** - Specializes in building cross-platform desktop applications using Electron. 98 | 99 | 39. **[Freelance Flutter Developer](https://www.spec-india.com/blog/flutter-developer)** - Develops cross-platform mobile applications using Google's Flutter framework. 100 | 101 | 40. **[Freelance Svelte Developer](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Client-side_JavaScript_frameworks/Svelte_getting_started#:~:text=Svelte%20is%20a%20compiler%20that,basics%20of%20how%20it%20works.)** - Focuses on building web apps with Svelte, a newer JavaScript framework for creating reactive web interfaces. 102 | 103 | 41. **[Freelance Cybersecurity Specialist](https://www.comptia.org/content/it-careers-path-roadmap/cybersecurity-specialist#:~:text=What%20is%20a%20Cybersecurity%20Specialist,containing%20and%20remediating%20IT%20threats.)** - Offers expertise in securing applications, networks, and systems against cyber threats. 104 | 105 | 42. **[Freelance Go Developer](https://fullscale.io/blog/what-is-a-golang-developer/)** - Specializes in using Go (Golang), particularly for high-performance and networked applications. 106 | 107 | 43. **[Freelance Scala Developer](https://www.revelo.com/blog/scala-developer)** - Works with Scala, often used for big data processing and complex algorithms. 108 | 109 | 44. **[Freelance Kotlin Developer](https://nofluffjobs.com/log/work-in-it/kotlin-what-is-it-and-how-to-become-a-kotlin-developer/)** - Develops applications for Android and other platforms using Kotlin. 110 | 111 | 45. **[Freelance Rust Developer](https://www.ko2.co.uk/how-to-become-a-rust-developer/)** - Focuses on system-level programming, networked solutions, and performance-critical applications in Rust. 112 | 113 | 46. **[Freelance Salesforce Developer](https://www.salesforce.com/blog/what-is-a-salesforce-developer/)** - Expert in customizing Salesforce CRM and developing applications on the Salesforce platform. 114 | 115 | 47. **[Freelance Perl Developer](https://www.softwareengineerinsider.com/careers/perl-developer.html)** - Specializes in Perl scripting for web development, system administration, and network programming. 116 | 117 | 48. **[Freelance Elixir Developer](https://www.quora.com/What-is-an-elixir-developer)** - Works with Elixir, known for scalable and maintainable applications, often used with the Phoenix framework. 118 | 119 | 49. **[Freelance Groovy Developer](https://devskiller.com/blog/screen-groovy-developers/)** - Skilled in Apache Groovy, a language for the Java platform aimed at improving developer productivity. 120 | 121 | 50. **[Freelance Embedded Systems Developer](https://www.betterteam.com/embedded-developer-job-description)** - Develops software for embedded systems, requiring knowledge of both hardware and software. 122 | 123 | ## Freelance Website 124 | 125 | 1. **[Upwork](https://www.upwork.com/)** - A versatile platform connecting freelancers with clients across various industries, including software development. 126 | 2. **[Freelancer](https://www.freelancer.com/)** - Offers a wide array of projects, from small tasks to major development contracts. 127 | 3. **[Toptal](https://www.toptal.com/)** - An exclusive network for the top 3% of freelance software developers, designers, and finance experts. 128 | 4. **[Fiverr](https://www.fiverr.com/)** - Popular for offering services in digital marketing, graphic design, programming, and more. 129 | 6. **[Stack Overflow Jobs](https://stackoverflow.com/jobs/companies)** - Offers job listings in software development and other technical fields. 130 | 7. **[Gigster](https://gigster.com/)** - Connects tech professionals with businesses for project-based work. 131 | 8. **[PeoplePerHour](https://www.peopleperhour.com/)** - Offers a range of freelance tasks, including web development and programming. 132 | 9. **[Hired](https://hired.com/)** - A career marketplace for the world's knowledge workers, focusing on technology roles. 133 | 10. **[Gun.io](https://gun.io/)** - Specializes in connecting freelance developers with clients requiring high-quality tech expertise. 134 | 11. **[Codeable.io](https://www.codeable.io/)** - Dedicated to connecting WordPress experts with clients. 135 | 12. **[FlexJobs](https://www.flexjobs.com/)** - Offers a variety of telecommuting and remote job opportunities, including in software development. 136 | 13. **[Authentic Jobs](https://authenticjobs.com/)** - A job board for designers, developers, and creative professionals. 137 | 14. **[Dice](https://www.dice.com/)** - A career website for technology and engineering professionals. 138 | 15. **[Behance](https://www.behance.net/)** - Adobe’s platform where creative professionals showcase their work and find freelance projects. 139 | 16. **[Working Nomads](https://www.workingnomads.com/jobs)** - Curates lists of remote job offerings for digital working nomads. 140 | 17. **[AngelList](https://www.angellist.com/)** - Connects startups with job seekers interested in tech and startup culture. 141 | 18. **[Guru](https://www.guru.com/)** - Offers a range of freelance jobs, including plenty in software development and web design. 142 | 19. **[Arc](https://arc.dev/)** - Connects developers with companies for remote jobs. 143 | 20. **[Remote.co](https://remote.co/)** - A resource for companies and freelancers focusing on remote employment opportunities. 144 | 21. **[CyberCoders](https://www.cybercoders.com/)** - A recruiting company that connects top tech talent with emerging companies. 145 | 23. **[Crossover](https://www.crossover.com/)** - Specializes in connecting companies with the best talent from around the world. 146 | 24. **[SimplyHired](https://www.simplyhired.com/)** - A job search engine with a wide range of job listings, including tech and development roles. 147 | 26. **[WordPress Jobs](https://jobs.wordpress.net/)** - Dedicated to job listings for all things WordPress. 148 | 27. **[Dribbble](https://dribbble.com/)** - A community for showcasing user-made artwork and finding freelance design and development work. 149 | 28. **[99designs](https://99designs.com/)** - Primarily a platform for freelance designers, but also offers development projects. 150 | 29. **[DesignCrowd](https://www.designcrowd.com/)** - A custom design marketplace that also caters to web and app development. 151 | 30. **[Topcoder](https://www.topcoder.com/)** - Hosts online coding competitions and offers freelance coding gigs. 152 | 31. **[Ruby Now](https://jobs.rubynow.com/)** - A job board focused on Ruby on Rails developers. 153 | 32. **[Remote OK](https://remoteok.com/)** - Provides a list of remote jobs, including development and software engineering roles. 154 | 33. **[Laravel Jobs](https://larajobs.com/)** - A niche job board for Laravel PHP framework developers. 155 | 34. **[React Jobs](https://www.react-jobs.com/)** - A dedicated platform for React developers looking for freelance or full-time roles. 156 | 35. **[PowerToFly](https://powertofly.com/)** - Focuses on matching women in tech with remote and flexible jobs. 157 | 36. **[Loom](https://twitter.com/joinloom)** - Connects developers with short-term freelance projects. 158 | 37. **[We Work Remotely](https://weworkremotely.com/)** - Offers remote job listings, including programming and development roles. 159 | 38. **[YunoJuno](https://www.yunojuno.com/)** - A UK-based platform connecting freelancers with leading brands and startups. 160 | 39. **[Hirable](https://hirable.fyi/)** - Connects pre-vetted developers with freelance projects. 161 | 40. **[Smashing Magazine Jobs](https://www.smashingmagazine.com/jobs/)** - Offers job listings in programming and web design, part of the Smashing Magazine community. 162 | 41. **[The Muse](https://www.themuse.com/)** - Provides job search resources and listings, including tech and development roles. 163 | 42. **[Outsourcely](https://www.outsourcely.com/)** - Connects startups with a global workforce of remote workers. 164 | 43. **[TechCareers](https://www.techcareers.com/)** - A job board for technology positions, including development roles. 165 | 47. **[LanceBase](https://lancebase.io/)** - A forum and marketplace for freelancers, with a focus on tech and creative fields. 166 | 167 | ### Freelance Website That is Already Inactive 168 | 22. **CloudPeeps** - A community, marketplace, and platform that matches freelance talent with top clients. 169 | 25. **Joomlancers** - Focused on freelance work for Joomla developers and designers. 170 | 44. **LocalSolo** - Matches freelance professionals with local clients. 171 | 45. **Remotees** - changed into We Work Remotely - An aggregator that collects remote job listings from multiple sources. 172 | 46. **Moonlighting** - A platform for freelancers to offer their skills, including in technology and development. 173 | 174 | 175 | ## Tools for Freelance Developer 176 | TBD 177 | 178 | ## Gadgets for Freelance Developer 179 | TBD 180 | 181 | ## Must-Know Legal Aspect For Freelance Developer 182 | TBD 183 | 184 | ## Community For Freelance Developer 185 | TBD 186 | 187 | ## Learning and Skill Development 188 | TBD 189 | 190 | ## Data about Freelance Developer 191 | - Most sought languages for freelance 192 | - Income for freelance developer 193 | -------------------------------------------------------------------------------- /how-to-succeed-in-freelancing-as-freelance-developer.md: -------------------------------------------------------------------------------- 1 | **Table Of Content** 2 | 1. [Getting Started As Freelance Developer](#getting-started-as-freelance-developer) 3 | 2. [Building Your Skillset](#building-your-skillset) 4 | 3. [Setting Up Your Business](#setting-up-your-business) 5 | 4. [Finding Work](#finding-work) 6 | 5. [Managing Projects](#managing-projects) 7 | 6. [Client Relationships](#client-relationships) 8 | 7. [Pricing and Contracts](#pricing-and-contracts) 9 | 8. [Work-Life Balance](#work-life-balance) 10 | 9. [Continued Learning](#continued-learning) 11 | 12 | 13 | # Getting Started As Freelance Developer 14 | 15 | ## Overview of Freelance Development 16 | Freelance development offers the flexibility to choose your projects, work schedule, and clients. It involves working as an independent contractor or business owner rather than as an employee for a single company. This section will help you understand the fundamentals of freelance work and what it entails. 17 | 18 | ## Essential Skills and Tools for Freelance Developers 19 | To be successful as a freelance developer, you need a mix of technical and soft skills: 20 | - **Technical Skills**: Proficiency in relevant programming languages and frameworks based on your area of expertise, such as web development, mobile app development, or data science. 21 | - **Soft Skills**: Strong communication skills, time management, problem-solving abilities, and self-discipline are crucial for managing projects and client relations effectively. 22 | - **Business Skills**: Basic understanding of business operations, including marketing, invoicing, contract negotiation, and client management. 23 | 24 | ### Tools of the Trade 25 | - **Development Tools**: Familiarity with Integrated Development Environments (IDEs), version control systems like Git, and other coding tools. 26 | - **Project Management Tools**: Knowledge of tools like Trello, Asana, or Jira for managing projects. 27 | - **Communication Tools**: Proficiency in using communication tools such as Slack, Zoom, or Microsoft Teams for client interactions. 28 | 29 | ## Steps to Transition from a Traditional Job to Freelancing 30 | 1. **Skill Assessment**: Evaluate your current skill set and identify areas for improvement. 31 | 2. **Market Research**: Understand the demand for your skills and identify your niche in the freelance market. 32 | 3. **Financial Planning**: Ensure you have enough savings to support the initial phase of your freelance career. 33 | 4. **Building a Portfolio**: Create a portfolio showcasing your best work. Include case studies, testimonials, and detailed descriptions of your projects. 34 | 5. **Legal Setup**: Understand the legal requirements to set up as a freelancer in your region. This may include registering your business, getting insurance, and understanding tax obligations. 35 | 6. **Networking**: Start building a professional network both online and offline. Attend industry meetups, join online forums, and connect with other professionals on LinkedIn. 36 | 7. **Creating an Online Presence**: Develop a professional website and establish a presence on relevant social media platforms and professional networks. 37 | 8. **Finding Initial Clients**: Start with smaller projects from freelance websites, referrals, or local businesses to build your reputation. 38 | 9. **Feedback and Iteration**: Continuously seek feedback from clients and peers to improve your services. 39 | 40 | # Building Your Skillset 41 | 42 | Freelancing in the field of development requires a strong and continually evolving skill set. This section covers the key areas you should focus on to stay competitive and successful. 43 | 44 | ## Key Programming Languages and Technologies 45 | 46 | - **Web Development**: HTML, CSS, JavaScript, and frameworks like React, Angular, or Vue.js. 47 | - **Back-End Development**: Proficiency in languages like Python, Ruby, Java, or PHP, and knowledge of server, database, and application architecture. 48 | - **Mobile App Development**: Skills in Swift (for iOS) or Kotlin (for Android), and cross-platform frameworks like React Native or Flutter. 49 | - **Data Science & Machine Learning**: Python, along with libraries like Pandas, NumPy, TensorFlow, or PyTorch. 50 | - **DevOps & Cloud Computing**: Understanding of AWS, Azure, or GCP, along with CI/CD pipelines, containerization (Docker, Kubernetes), and infrastructure as code. 51 | 52 | ## Resources for Self-Learning 53 | 54 | - **Online Courses**: Platforms like Coursera, Udemy, and Pluralsight offer comprehensive courses in various programming languages and tech skills. 55 | - **Tutorials and Guides**: Websites like freeCodeCamp, Codecademy, and W3Schools provide free, interactive coding lessons. 56 | - **Books and eBooks**: Look for up-to-date books and eBooks on current technologies and programming concepts. 57 | - **Developer Communities**: Participate in communities like Stack Overflow, GitHub, or Reddit’s programming forums for practical advice and knowledge sharing. 58 | 59 | ## Tips for Staying Updated with Tech Trends 60 | 61 | 1. **Follow Industry News**: Regularly read tech blogs, subscribe to newsletters, and follow thought leaders on social media. 62 | 2. **Join Tech Meetups and Webinars**: Engage with local and online tech communities to learn from peers and industry experts. 63 | 3. **Contribute to Open Source Projects**: Get hands-on experience and contribute to real-world projects on platforms like GitHub. 64 | 4. **Attend Workshops and Conferences**: Stay informed about the latest industry trends and network with other professionals. 65 | 5. **Experiment with Side Projects**: Build your own projects using new tools and technologies to understand their practical applications. 66 | 67 | ## Continual Skill Improvement 68 | 69 | - **Set Learning Goals**: Define clear, achievable objectives for what you want to learn or improve upon. 70 | - **Practice Regularly**: Consistent practice is key to mastering any skill. 71 | - **Seek Feedback**: Share your work with peers or mentors and be open to constructive criticism. 72 | - **Teach Others**: Teaching can reinforce your own knowledge and clarify concepts. 73 | 74 | # Setting Up Your Business 75 | 76 | Transitioning into freelance development not only involves honing your technical skills but also setting up and managing your business effectively. Here’s a guide to get you started on the right foot. 77 | 78 | ## Legal Structure and Registration 79 | 80 | - **Decide on a Business Structure**: Choose between sole proprietorship, partnership, LLC, or corporation based on your business needs and legal advice. 81 | - **Register Your Business**: Depending on your location and business structure, you may need to register your business with the appropriate local or national authorities. 82 | - **Obtain Necessary Licenses and Permits**: Research and acquire any required licenses or permits to legally operate your business. 83 | 84 | ## Financial Management 85 | 86 | - **Open a Business Bank Account**: Keep your personal and business finances separate. 87 | - **Set Up an Accounting System**: Choose accounting software to manage your finances, track expenses, and prepare for taxes. 88 | - **Plan for Taxes**: Understand your tax obligations and consider working with a tax professional. 89 | 90 | ## Branding and Online Presence 91 | 92 | - **Create a Brand Identity**: Develop a brand name, logo, and style that reflects your professional image. 93 | - **Build a Professional Website**: Your website should showcase your portfolio, services, and contact information. 94 | - **Leverage Social Media**: Use platforms like LinkedIn, Twitter, and GitHub to network and share your expertise. 95 | 96 | ## Tools and Software for Business Management 97 | 98 | - **Project Management Tools**: Utilize tools like Asana, Trello, or Jira to keep track of your projects and deadlines. 99 | - **Communication Tools**: Tools like Slack, Zoom, and Microsoft Teams are essential for client communication. 100 | - **Invoicing and Time Tracking**: Use software like FreshBooks, QuickBooks, or Harvest for invoicing clients and tracking your time. 101 | 102 | ## Insurance and Legal Protection 103 | 104 | - **Professional Liability Insurance**: Consider getting insurance to protect against legal claims and disputes. 105 | - **Draft Contracts and Agreements**: Create clear contracts for your services to define scope, timelines, payment terms, and confidentiality. 106 | 107 | ## Building a Support Network 108 | 109 | - **Connect with Other Freelancers**: Join freelance communities, forums, and local meetups to share experiences and advice. 110 | - **Seek Mentors and Advisors**: Look for experienced professionals who can provide guidance and support. 111 | 112 | ## Marketing and Networking 113 | 114 | - **Develop a Marketing Strategy**: Use online and offline marketing strategies to attract clients. 115 | - **Network Relentlessly**: Attend industry events, participate in online forums, and engage with potential clients and fellow professionals. 116 | 117 | # Finding Work 118 | 119 | As a freelance developer, finding consistent and rewarding work is crucial. This section provides strategies and resources to help you secure freelance projects. 120 | 121 | ## Understanding the Freelance Market 122 | 123 | - **Identify Your Niche**: Specializing in a specific area of development can help you stand out. 124 | - **Research Demand**: Understand the market demand for your skills and how you can align your services with client needs. 125 | 126 | ## Building a Strong Portfolio 127 | 128 | - **Showcase Your Best Work**: Include a variety of projects that demonstrate your skills and versatility. 129 | - **Include Case Studies**: Provide context and details about your projects, including challenges, solutions, and outcomes. 130 | - **Keep It Updated**: Regularly add new projects and remove outdated ones. 131 | 132 | ## Using Freelance Platforms 133 | 134 | - **Create Profiles on Major Platforms**: Join websites like Upwork, Freelancer, and Toptal. 135 | - **Bid on Projects**: Write personalized proposals that highlight how your skills match the project requirements. 136 | - **Build Your Reputation**: Aim for positive reviews and ratings by delivering quality work on time. 137 | 138 | ## Networking and Building Relationships 139 | 140 | - **Attend Industry Events**: Conferences, workshops, and meetups can be great for meeting potential clients and fellow developers. 141 | - **Join Online Communities**: Participate in forums, social media groups, and platforms like LinkedIn. 142 | - **Request Referrals**: Ask satisfied clients to refer you to others. 143 | 144 | ## Leveraging Social Media and Content Marketing 145 | 146 | - **Active Online Presence**: Share your expertise and insights on platforms like LinkedIn, Twitter, and tech blogs. 147 | - **Content Marketing**: Write blog posts or create videos about development topics to attract potential clients. 148 | 149 | ## Direct Outreach 150 | 151 | - **Identify Potential Clients**: Research companies or individuals who might need your services. 152 | - **Craft Personalized Pitches**: Reach out with tailored messages explaining how you can solve their specific problems. 153 | 154 | ## Keeping Skills Relevant 155 | 156 | - **Stay Updated**: Continuously learn and adapt to new technologies and industry trends. 157 | - **Offer Modern Solutions**: Make sure your skills and services meet current market needs. 158 | 159 | ## Managing Rejections 160 | 161 | - **Stay Positive**: Not every pitch will be successful; learn from rejections and keep improving. 162 | - **Seek Feedback**: If possible, ask for feedback from clients who turn you down to understand areas of improvement. 163 | 164 | # Managing Projects 165 | 166 | Effectively managing projects is crucial for a successful freelance career. This section provides insights and strategies to help you handle projects efficiently and professionally. 167 | 168 | ## Setting Clear Goals and Expectations 169 | 170 | - **Define Scope**: Clearly understand and define the project scope to avoid scope creep. 171 | - **Set Milestones**: Break the project into manageable milestones with deadlines. 172 | - **Communicate Expectations**: Ensure both you and the client are on the same page regarding project outcomes. 173 | 174 | ## Time Management 175 | 176 | - **Prioritize Tasks**: Identify the most critical tasks and tackle them first. 177 | - **Use a Calendar**: Block out time for focused work, meetings, and breaks. 178 | - **Avoid Multitasking**: Focus on one task at a time for better efficiency and quality. 179 | 180 | ## Choosing the Right Tools 181 | 182 | - **Project Management Software**: Tools like Trello, Asana, or Jira can help you track progress and organize tasks. 183 | - **Version Control Systems**: Use Git or similar systems for tracking changes and collaborating with others. 184 | - **Communication Tools**: Regularly update clients using emails, messaging apps, or project management tools. 185 | 186 | ## Handling Multiple Projects 187 | 188 | - **Don’t Overcommit**: Be realistic about your workload and only take on what you can handle. 189 | - **Allocate Time Wisely**: Schedule your work based on project priority and deadlines. 190 | - **Stay Organized**: Keep separate files and folders for each project to avoid confusion. 191 | 192 | ## Dealing with Challenges 193 | 194 | - **Be Proactive**: Address issues as soon as they arise. 195 | - **Seek Client Feedback**: Regularly check in with clients to ensure the project meets their expectations. 196 | - **Adapt and Learn**: Each project is an opportunity to learn and improve your project management skills. 197 | 198 | ## Delivering Quality Work 199 | 200 | - **Focus on Quality**: Ensure your work meets professional standards and client requirements. 201 | - **Testing and Review**: Thoroughly test your work before delivery and seek peer reviews if possible. 202 | - **Meet Deadlines**: Strive to meet or beat deadlines without compromising on quality. 203 | 204 | ## Post-Project Review 205 | 206 | - **Seek Client Feedback**: After project completion, ask for client feedback to understand areas of strength and improvement. 207 | - **Reflect on Your Performance**: Analyze what went well and what could be improved for future projects. 208 | - **Update Your Portfolio**: Add the completed project to your portfolio with a detailed case study. 209 | 210 | # Client Relationships 211 | 212 | Building and maintaining strong relationships with clients is vital for a successful freelance career. This section focuses on strategies to help you foster positive and productive client interactions. 213 | 214 | ## Effective Communication 215 | 216 | - **Be Responsive**: Promptly respond to client communications to build trust and demonstrate professionalism. 217 | - **Clarity and Transparency**: Clearly communicate project progress, challenges, and expectations. Avoid technical jargon when explaining to non-tech-savvy clients. 218 | - **Regular Updates**: Provide regular project updates and check-ins, even when not explicitly requested by the client. 219 | 220 | ## Setting Expectations 221 | 222 | - **Establish Clear Terms**: Define project scope, deadlines, payment terms, and deliverables at the start. 223 | - **Use a Contract**: Always have a written agreement or contract to avoid misunderstandings later. 224 | - **Be Realistic**: Set achievable goals and deadlines. It’s better to under-promise and over-deliver. 225 | - 226 | ## Understanding Client Needs 227 | 228 | - **Active Listening**: Pay attention to what the client is saying and ask questions for clarity. 229 | - **Adaptability**: Be flexible and willing to adjust your approach based on client feedback. 230 | - **Solution-Oriented**: Focus on providing solutions, not just completing tasks. 231 | 232 | ## Handling Feedback and Revisions 233 | 234 | - **Positive Attitude**: View feedback as an opportunity to improve. 235 | - **Define Revision Policies**: Clearly state how many revisions are included and the charges for additional work. 236 | - **Constructive Responses**: Respond to feedback constructively and professionally. 237 | 238 | ## Resolving Conflicts 239 | 240 | - **Stay Calm and Professional**: Keep emotions in check and address issues factually. 241 | - **Seek Win-Win Solutions**: Aim for resolutions that satisfy both parties. 242 | - **Learn from Disputes**: Use conflicts as learning experiences to improve future client interactions. 243 | 244 | ## Building Long-Term Relationships 245 | 246 | - **Exceed Expectations**: Go above and beyond to deliver exceptional work. 247 | - **Follow-Up**: Check in with past clients periodically to maintain the relationship. 248 | - **Ask for Referrals**: Satisfied clients are often willing to refer you to others. 249 | 250 | ## Personalization 251 | 252 | - **Understand the Client’s Business**: Showing interest in their business can create a deeper connection. 253 | - **Customize Your Approach**: Tailor your communication and services to each client’s specific needs and preferences. 254 | 255 | # Pricing and Contracts 256 | 257 | Navigating pricing and contracts is a crucial aspect of freelance work. This section will guide you through setting your rates and understanding the essentials of contracts. 258 | 259 | ## Understanding Your Value 260 | 261 | - **Market Research**: Research rates for similar services in your industry and region to understand market standards. 262 | - **Skill Level Assessment**: Consider your experience and skill level when setting your rates. 263 | - **Value-Based Pricing**: Price your services based on the value you bring to the client, not just the time spent. 264 | 265 | ## Setting Your Rates 266 | 267 | - **Hourly vs. Project-Based**: Decide whether to charge by the hour or per project. Hourly rates are straightforward, while project-based rates can align better with value delivered. 268 | - **Be Transparent**: Clearly communicate your rates to avoid misunderstandings. 269 | - **Adjust as Needed**: Regularly review and adjust your rates based on experience, demand, and feedback. 270 | 271 | ## Creating Effective Contracts 272 | 273 | - **Clear Scope of Work**: Define exactly what services you will provide, including any deliverables and deadlines. 274 | - **Payment Terms**: Specify payment amounts, schedules, and acceptable methods. 275 | - **Revision and Cancellation Policies**: Outline policies for revisions, additional work, and project cancellation. 276 | 277 | ## Negotiating Contracts 278 | 279 | - **Be Prepared to Negotiate**: Clients may want to negotiate on price or scope. Know your limits and be clear about what is negotiable. 280 | - **Mutual Benefits**: Aim for a contract that is fair and beneficial to both parties. 281 | - **Legal Review**: Consider having a legal professional review complex contracts. 282 | 283 | ## Dealing with Late Payments 284 | 285 | - **Payment Terms in Contract**: Include clear payment deadlines in your contracts. 286 | - **Reminders and Follow-Ups**: Send polite reminders for upcoming or overdue payments. 287 | - **Late Payment Fees**: Consider implementing late payment fees as outlined in your contract. 288 | 289 | ## Building Long-Term Client Relationships 290 | 291 | - **Regular Rate Reviews**: Communicate any changes in your rates to long-term clients in advance. 292 | - **Referral Discounts**: Offer incentives for clients who refer new business to you. 293 | - **Quality Service**: Consistently delivering quality work is key to maintaining positive relationships and justifying your rates. 294 | 295 | # Work-Life Balance 296 | 297 | Maintaining a healthy work-life balance is crucial for long-term success and well-being in freelance development. This section provides strategies to help you manage your professional and personal life effectively. 298 | 299 | ## Setting Boundaries 300 | 301 | - **Define Work Hours**: Establish and stick to specific work hours to separate your professional and personal life. 302 | - **Create a Dedicated Workspace**: Having a designated area for work helps in mentally separating work from leisure time. 303 | - **Communicate Availability**: Make clients aware of your working hours to set expectations for communication and deadlines. 304 | 305 | ## Managing Time Effectively 306 | 307 | - **Prioritize Tasks**: Use tools like to-do lists or digital planners to prioritize daily tasks and projects. 308 | - **Avoid Overworking**: Take regular breaks and avoid the temptation to work beyond your set hours. 309 | - **Use Time Management Techniques**: Techniques like the Pomodoro Technique or time blocking can enhance focus and productivity. 310 | 311 | ## Dealing with Stress and Burnout 312 | 313 | - **Recognize the Signs**: Be aware of signs of stress and burnout, like prolonged fatigue, irritability, or loss of motivation. 314 | - **Take Time Off**: Regularly schedule time off for rest and relaxation. 315 | - **Seek Support**: Don’t hesitate to talk to friends, family, or professionals for support. 316 | 317 | ## Maintaining Physical and Mental Health 318 | 319 | - **Regular Exercise**: Incorporate physical activity into your routine to reduce stress and improve overall health. 320 | - **Healthy Eating Habits**: Balanced nutrition is essential for maintaining energy and focus. 321 | - **Mindfulness and Relaxation**: Practices like meditation, yoga, or hobbies can help in maintaining mental well-being. 322 | 323 | ## Balancing Personal Relationships 324 | 325 | - **Quality Time with Loved Ones**: Make sure to spend quality time with family and friends. 326 | - **Set Realistic Expectations**: Be clear with loved ones about your work demands and seek their support and understanding. 327 | - **Unplug Regularly**: Make an effort to disconnect from work, especially during family or personal time. 328 | 329 | ## Continuous Learning and Growth 330 | 331 | - **Personal Development**: Invest time in personal growth activities that are not related to work. 332 | - **Stay Curious and Explore**: Engage in new hobbies or interests outside your professional life. 333 | 334 | # Continued Learning 335 | 336 | In the ever-evolving field of technology, continuous learning is key to staying relevant and competitive as a freelance developer. This section explores ways to keep your skills sharp and stay up-to-date with industry trends. 337 | 338 | ## Staying Updated with Industry Trends 339 | 340 | - **Follow Tech News**: Regularly read tech blogs, subscribe to industry newsletters, and follow thought leaders on social media. 341 | - **Participate in Webinars and Online Courses**: Engage in ongoing education through platforms like Coursera, Udemy, or edX. 342 | - **Attend Conferences and Workshops**: Stay abreast of new technologies and methodologies by attending relevant events. 343 | 344 | ## Engaging in Practical Learning 345 | 346 | - **Work on Side Projects**: Apply new skills to personal projects. This not only solidifies your learning but can also enhance your portfolio. 347 | - **Contribute to Open Source Projects**: Get involved in open source projects to gain experience, collaborate with others, and contribute to the community. 348 | - **Participate in Hackathons**: Join hackathons to challenge yourself, learn rapidly, and network with peers. 349 | 350 | ## Building a Learning Network 351 | 352 | - **Join Developer Communities**: Engage with communities on platforms like Stack Overflow, GitHub, or Reddit to share knowledge and learn from peers. 353 | - **Find a Mentor or Coach**: Connect with experienced professionals who can provide guidance and insight. 354 | - **Participate in Peer Learning**: Engage in study groups or coding clubs to learn collaboratively. 355 | 356 | ## Keeping Skills Relevant 357 | 358 | - **Regularly Review and Update Skills**: Periodically assess your skill set and identify areas for improvement or new technologies to learn. 359 | - **Learn Complementary Skills**: Expand your expertise in areas like UX/UI design, project management, or soft skills to enhance your overall profile. 360 | 361 | ## Leveraging Learning Resources 362 | 363 | - **Utilize Online Tutorials and Guides**: Make use of free resources like freeCodeCamp, Codecademy, or W3Schools for targeted learning. 364 | - **Read Books and Articles**: Stay informed with the latest books and articles on programming and tech trends. 365 | - **Watch Educational Videos and Podcasts**: Incorporate learning into your daily routine with tech-focused videos and podcasts. 366 | 367 | ## Balancing Work and Learning 368 | 369 | - **Set Aside Dedicated Time for Learning**: Schedule regular time slots for education and skill development. 370 | - **Apply Learning to Real-World Scenarios**: Use your freelance projects as opportunities to apply new knowledge and techniques. 371 | 372 | # Community and Support 373 | 374 | Building a support network and being part of a community can greatly enhance your freelance development career. This section discusses ways to engage with the broader community and find valuable support. 375 | 376 | ## Joining Developer Communities 377 | 378 | - **Online Forums and Groups**: Engage in online communities like Stack Overflow, GitHub discussions, or specialized forums in your technology stack. 379 | - **Social Media Platforms**: Follow and interact with fellow developers and industry leaders on platforms like LinkedIn, Twitter, and Facebook. 380 | 381 | ## Networking and Collaboration 382 | 383 | - **Attend Local Meetups and Tech Events**: Participate in local developer meetups, tech talks, and workshops to network and share experiences. 384 | - **Conferences and Seminars**: Attend industry conferences and seminars to meet peers and stay updated with the latest trends. 385 | 386 | ## Finding Mentorship 387 | 388 | - **Seeking a Mentor**: Look for experienced professionals who can provide guidance, advice, and feedback on your career. 389 | - **Becoming a Mentor**: Share your knowledge and experience with less experienced developers. 390 | 391 | ## Participating in Peer Support 392 | 393 | - **Peer Learning Groups**: Join or form study groups or coding clubs for mutual learning and support. 394 | - **Pair Programming Sessions**: Collaborate with peers on coding projects to learn from each other. 395 | 396 | ## Contributing to Open Source Projects 397 | 398 | - **Collaborate on Open Source**: Contribute to open source projects to learn, grow your network, and give back to the community. 399 | - **Start Your Own Project**: Initiate an open source project to solve common problems or meet community needs. 400 | 401 | ## Leveraging Online Resources 402 | 403 | - **Blogs and Podcasts**: Follow blogs and listen to podcasts that focus on freelancing and development to gain insights and advice. 404 | - **Webinars and Online Workshops**: Participate in online learning sessions hosted by experts in the field. 405 | 406 | ## Building Resilience 407 | 408 | - **Sharing Challenges and Solutions**: Discuss your challenges with peers to find solutions and get moral support. 409 | - **Wellness and Self-Care**: Engage in activities that promote mental and physical well-being. 410 | 411 | ## Giving Back to the Community 412 | 413 | - **Teaching and Sharing Knowledge**: Conduct workshops, write blogs, or create tutorials to share your knowledge and experiences. 414 | - **Volunteering**: Offer your skills to non-profit organizations or community projects. 415 | --------------------------------------------------------------------------------