I am looking to set up a site where certain channels can only have one entry per member, whether it be through expressionengine settings or through an add on. Does anyone has any experience of setting up anything similar?
You could do this with template tags, literally limiting access to channel entries they have authored to '1' - therefore they could only view/edit the same one entry? OR you could use something like zoo visitor, which stores member data as channel data, and then set up a single entry relationship between the member entry and their designated entry? But I think the first option would do it...
We actually just accomplished a similar setup with the Solspace User module. Zoo Admin gave us some trouble once we started to deal with MSM (disclaimer before you buy). We're using it in a profile setting where we needed to use channel fields to get all of the functionality we wanted. Once assigned as author, that member has full access to edit their member and/or channel entry fields. Pretty pleased with the outcome. Let me know if this would help for your -- happy to share our work.
I've built something kind of similar where I have a field to store that members member_id and then, within the template for viewing the entry, I use the search param to find only entries with their member_id in that field. although there was a plugin I needed to affect the parse order of the member_id global variable as it parses quite late and is otherwise not usable inside the channel entries tag.
This is a manual process but within the context I required it was perfect as member assigning was a required step of the system we put together.