Frequently Asked Questions (FAQ)¶
How can I add a new social network to RenderCV?¶
To add a new social network to RenderCV, go to the rendercv/data/models/curriculum_vitae.py
file and follow these steps:
- Append the social network name (for example, "Facebook") to the
SocialNetworkName
type. - If necessary, implement its username validation in the
SocialNetwork.check_username
method. - Implement its URL generation using the
SocialNetwork.url
method. If the URL can be generated by appending the username to a hostname, only updateurl_dictionary
. - Finally, include the Typst icon of the social network to the
icon_dictionary
in theCurriculumVitae.connections
method. RenderCV uses thefontawesome
package.
Then, the tests should be implemented for the new social network with the following steps:
- Go to
tests/test_data.py
and updatetest_social_network_url
accordingly, i.e., add a new(network, username, expected_url)
tuple to thepytest.mark.parametrize
decorator. - Go to
tests/conftest.py
and add the new social network torendercv_filled_curriculum_vitae_data_model
. - Set
update_testdata
toTrue
inconftest.py
and run the tests to update thetestdata
folder. - Review the updated
testdata
folder manually to ensure everything works as expected. Then, setupdate_testdata
toFalse
and push the changes.
When should we consider adding a new entry type to RenderCV?¶
We should add a new entry type if and only if the proposed design of the entry type cannot be achieved using any of the existing entry types. This is because RenderCV's entry types are not designed to function as data models. Their purpose is not to store specific data but rather to determine how a given set of strings will appear in the PDF.
For example, JSON Resume follows a data-oriented approach. In JSON Resume, each entry type acts as a data model specifically designed to store structured information. RenderCV takes a design-oriented approach for two reasons: - There would be too many different data models that would ultimately look more or less the same in the PDF. - It would be impossible to provide all the different data models people might need.
Therefore, we decided to create entry types solely for their design output.