docs/developer_guide/how_to/add_social_network.md
Add network name to SocialNetworkName type
Edit src/rendercv/schema/models/cv/social_network.py:
type SocialNetworkName = Literal[
"LinkedIn",
"GitHub",
# ... existing networks
"MyNetwork", # Add your network here
]
Add URL pattern to url_dictionary
Edit src/rendercv/schema/models/cv/social_network.py:
url_dictionary: dict[SocialNetworkName, str] = {
"LinkedIn": "https://linkedin.com/in/",
# ... existing networks
"MyNetwork": "https://mynetwork.com/profile/", # Add URL base here
}
(Optional) Add username validation
If your network has special username format requirements, edit src/rendercv/schema/models/cv/social_network.py:
match network:
case "Mastodon":
# ... existing validations
case "MyNetwork":
# ... your custom validation logic
(Optional) Add custom URL generation
If URL generation requires special logic (not just base + username), edit src/rendercv/schema/models/cv/social_network.py:
@functools.cached_property
def url(self) -> str:
if self.network == "Mastodon":
# ... existing custom logic
elif self.network == "MyNetwork":
# ... your custom URL generation logic
else:
url = url_dictionary[self.network] + self.username
return url
Add Font Awesome icon
Edit src/rendercv/renderer/templater/connections.py:
typst_fa_icons = {
"LinkedIn": "linkedin",
# ... existing icons
"MyNetwork": "my-icon-name", # Add your icon name here
}
See available icons at: fontawesome.com/search
Add test for URL generation
Edit tests/schema/models/cv/test_social_network.py:
@pytest.mark.parametrize(
("network", "username", "expected_url"),
[
# ... existing tests
(
"MyNetwork",
"myusername",
"https://mynetwork.com/profile/myusername",
),
],
)
def test_url(self, network, username, expected_url):
# test implementation
Add network to test fixtures
Edit tests/renderer/conftest.py, add your network to the social_networks list:
social_networks=[
SocialNetwork(network="LinkedIn", username="johndoe"),
# ... existing networks
SocialNetwork(network="MyNetwork", username="johndoe"),
]
Update test data and verify visual output
just update-testdata
Check the generated PDFs in tests/renderer/testdata/test_pdf_png/ to ensure your network appears correctly with the icon.
Run tests to verify everything passes
just test