https://github.com/codingforentrepreneurs/tweetme-2
Build a twitter-like app in Django, Bootstrap, Javascript, & React.js. Step-by-Step.
https://github.com/codingforentrepreneurs/tweetme-2
bootstrap cfe django django-rest-framework javascript react reactjs rest-api tutorial tweetme twitter
Last synced: 2 months ago
JSON representation
Build a twitter-like app in Django, Bootstrap, Javascript, & React.js. Step-by-Step.
- Host: GitHub
- URL: https://github.com/codingforentrepreneurs/tweetme-2
- Owner: codingforentrepreneurs
- Created: 2019-12-14T01:09:23.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-01-05T13:48:06.000Z (about 3 years ago)
- Last Synced: 2024-03-15T19:58:03.341Z (about 2 years ago)
- Topics: bootstrap, cfe, django, django-rest-framework, javascript, react, reactjs, rest-api, tutorial, tweetme, twitter
- Language: Python
- Homepage: https://cfe.sh/projects/tweetme-2
- Size: 2.21 MB
- Stars: 402
- Watchers: 23
- Forks: 218
- Open Issues: 28
-
Metadata Files:
- Readme: Readme.md
Awesome Lists containing this project
README
# Tweetme 2
Build a twitter-like app in Django, Bootstrap, Javascript, & React.js. Step-by-Step.
[](https://cfe.sh/projects/tweetme-2)
### Lesson Code
_Lessons 1-5: no significant code added_
[6 - Updated VS Code Config](../../tree/c118bac532475dc16052c0ce5dce2d264d5c333a/)
[7 - Our Roadmap](../../tree/c51618fea2bf4e7af336d1377d31b5ce4c376217/)
[8 - The Tweets Model](../../tree/84a3ef90feeefa9e99264e832b0c73e4ded950a6/)
[9 - Store Data from Django Model](../../tree/c08ef2bb515709610161838223b0b16fc0fc4cf3/)
[10 - Intro to URL Routing and Dynamic Routing](../../tree/ef2e008e2a2b66130ec6e37a7b349f62ade71607/)
[11 - Handling Dynamic Routing](../../tree/9b7d4ce7cdc049de4d77716599a3a9fed3fe7e2d/)
[12 - Dynamic View into REST API Endpoint](../../tree/8823ffa71dc72a46ea5f51f2c4032d5101990929/)
[13 - Our First Template](../../tree/cd504b8dd2b91fcf5ffa8de5a1a99cba2abad379/)
[14 - Bootstrap & Django Templates](../../tree/6a9a5ec09ae1ed41bf84c37b5b667abe335e23a3/)
[15 - Tweet List View](../../tree/f52194e263c6600b43b11dfcb10ad686b155dd92/)
[16 - Dynamic Load Tweets via JavaScript](../../tree/935e371eca7e2926827d60107dd4d954f37fda03/)
[17 - Replace HTML Content with JavaScript](../../tree/a3ed3ae82854a5fccae2970559a40e5cd260cadd/)
[18 - Tweets to HTML via JavaScript](../../tree/30166801d0c48b38d91d95d9ae772ec2aa0c2682/)
[19 - Format Tweet Method](../../tree/714f3c80aed3fb491f9dd894927e673b231114ae/)
[20 - Like Button Rendering](../../tree/8124fe9de95400a65652d14a9c39def1dd9f2bdf/)
[21 - Rapid Implement of Bootstrap Theme](../../tree/7335b554e18a1d1c0999447410dffcc6a92e2266/)
[22 - Tweet Create Form](../../tree/4a56201848d5475b0ec8d4c59b22e307592eccae/)
[23 - Tweet Form by Hand](../../tree/0a7553c2294fee17c1d1e84b92f27e532540d026/)
[24 - Successful Form Redirect](../../tree/2e2f8c609e4815cba43468c8879823db0159c50f/)
[25 - Safe URL Redirect](../../tree/83c9b9e47ec1afa96a7164701851427ecf61d50d/)
[26 - Prevent Form Submit via JavaScript](../../tree/76cd131d96e7ef3690a62543fc4c23c75e63d4c6/)
[27 - Sending Form Data via pure JavaScript](../../tree/76cd131d96e7ef3690a62543fc4c23c75e63d4c6/)
[28 - Handling Ajax Requests](../../tree/99a8891b976d6acdb82a5a2b70676e9d23bd7e6f/)
[29 - Serialize Django Model Object](../../tree/ebff9f8fe77005de4c1f1934d5818befd5e39c64/)
[30 - Append New Tweet & Reorder](../../tree/c088d8b548a7c981f32a0cfd7151cff4a11fd528/)
[31 - Handling Form Errors](../../tree/4b764cbc57f533e25b5fa973342da550a1e3ab91/)
[32 - Rendering the Error Message via Vanilla JavaScript](../../tree/493d324165b47bc7b965916ab3233dc674991aee/)
[33 - Users & Tweets](../../tree/bca1089afdd332ec077c896069af032d86957ab0/)
[34 - Django Admin](../../tree/e4f6e285b029722925df1d58265a127d10224214/)
[35 - Associate Authenticated User to Object](../../tree/b553fc641b4e40722aa632caa4aa5bad7e63879f/)
[36 - Permissions & Roadmap](../../tree/c5e98a47214dc439290c32c8eb5315855cacb7bf/)
[37 - Install Django Rest Framework](../../tree/f0b6d26180c5a8c86e2e30df7a2c0f3a585c4472/)
[38 - Django Forms to Django Rest Framework Serializer](../../tree/773bd786a3bf114104e14b9cde54c4a5a1bf1cdf/)
[39 - Django Views to Django Rest Framework Views](../../tree/c1fdd108faf2e8494c3f9125334dbfb3ea0479d2/)
[40 - Permissions and Authentication Classes Decorators for DRF APIs](../../tree/62b13fef8bc0360c16180bc0a2ba91e26b91756d/)
[41 - Delete Tweet API View](../../tree/fd97a4487f54ecc2f204f99fd08053f4133374a0/)
[42 - Adding a Like Field](../../tree/0e72e11fdc4b9237465df622f8f4d6e2266e761b/)
[43 - Understanding Setting ManyToMayFields](../../tree/d7dcc835547cd7946913fcd702e1cfdbb81c5b43/)
[44 - Tweet Action View](../../tree/a801e54e56ec89c78be3fd675e1391d322fdc37d/)
[45 - JavaScript Tweet Action Handler](../../tree/df5d9f6c4521ea0b3bab964d0ffb8ad93aa44b08/)
[46 - CSRF & Client Side Action Buttons](../../tree/2902c65cb2072dbd66dce4ce89b56f1997127d7b/)
[47 - Retweeting Logic](../../tree/8ad028e5aec09bfc74d5309d943f2cb2bc8fd7f3/)
[48 - Two Types of Serializers](../../tree/5ae049e476bbcc12ed711bd508bdd1db35385a58/)
[49 - Internal App Urls](../../tree/94d7f9c9e4304a32da36213ddfec00390f8a10eb/)
[50 - Setting up Tests in Django](../../tree/863f1e597a9f2b9a6eab386cc55def479a9cc521/)
_51 - Verify or Install Nodejs- no code_
[52 - Create React App](../../tree/64af9c04b3138b8a65c059d2c448306dcfdb4f14/)
[54 - Ajax lookup via XHR in Reactjs](../../tree/a324816b849c8488a5f442c213b43e988c267bcc/)
[55 - Handling CORS and Invalid HOST_HEADER in Django](../../tree/28584e8be0455a8e6bb36a8236046843add92479/)
[56 - Functional Components in React](../../tree/56e80ff0608360bf1083d39aab9d82e4a051a83f/)
[57 - Reactjs Action Btn](../../tree/3d5c281e3b03bd99763efa137a74585438b3aaaf/)
[58 - Using JavaScript Modules](../../tree/bc892166397e5bc09a575c721c23d4fad3882469/)
[59 - Improved Action Btn](../../tree/17406366b1a5b1d360e25603868ee7b60920553d/)
[60 - Understanding setState Hook](../../tree/3bc00466c918241db25420d3c222e4bf693ac185/)
[61 - Handling a Form in React](../../tree/49553ed3e14b60ffa9453a545293812e85b64e9a/)
[62 - Pass from Parent Component to Child with useEffect](../../tree/7a6310b5c82a3651b86450725c9b9502999f9ef6/)
[63 - Adjust the React Render Process](../../tree/168382442ca1efeb90067c9c2ebd92a90027bb90/)
[64 - React Rendered by Django](../../tree/7f33ea9f9eab6c07345db535ff02d81b9c471871/)
[65 - Render React App via Any Django Template](../../tree/2763cd207d10ba25737bc9c5fd45f2a76b332e4e/)
[66 - A Better XHR Lookup](../../tree/6dfdf9913f7389235bc0ca81c0deec6f90c76f04/)
[67 - Create Tweet in React](../../tree/864b60b7ca7d7de211d6efd1de631146d068a010/)
[68 - Dev Authentication](../../tree/944cbcb5ad4c535eacf51aa6645f816e72f30edc/)
[69 - Handling New Tweet](../../tree/cd3a15c77d4343a11f65485132e88951929af393/)
[70 - API Methods in React](../../tree/5133bd4a589f180e3332a02de3a435b2418b4f0d/)
[71 - Tweet Action Btn](../../tree/8cab91c9fc6e678aa04cf3141110ebf56a7d913e/)
[72 - Rendering the ReTweet](../../tree/987ded4a6a4e1a1f4ab47e38d085e9ce325571c2/)
[73 - Improving the Tweet Action Button](../../tree/8f89a740e4db66cbd82879b26f08a6600318cb5a/)
[74 - Prepending Dynamic Retweets](../../tree/3fd141a06ebcdc9b27bd1ad779b1942771a04588/)
[75 - Set Data Props on ReactDOM Render](../../tree/82eb8cf2e88e5a1aa99947103a5a10f666a36c2e/)
[76 - Limit List View by Username](../../tree/c5306bb9cacac68268a1ac5bd4eb28f5610e2767/)
[77 - Rendering Limited Tweet List by Username](../../tree/5c7b86ad592bff6106826f4bfeb4f9120f5b63ca/)
[78 - Tweets Module Clean Up](../../tree/33af1a02d078540a14a74384b347313de2333f24/)
[79 - Lookup & Render & Embed Individual Tweets](../../tree/eb194546aa4202e6f1fbb46a69fecdc9e30e1311/)
[80 - Linking Individual Tweets](../../tree/55d983e16241705e01128164d351249cfb4267c8/)
[81 - Build and Use On Django](../../tree/9b524ac3a9e42139666fe10fb548833df8e5be5c/)
[82 - Clean Up API Urls and Views](../../tree/ac6fa11b6084f5e82fe8c7675f1858ab2e3fcb6e/)
[83 - Login Required Redirect](../../tree/e4761aa629c02c665be78b6f82c9fb26a4219d7a/)
[84 - Authentication & Registration](../../tree/b2b410fd524924eb73b8491a4785a5fdfc8f281f/)
[85 - User Profiles](../../tree/889c7cbf37b43a1320c6231186ab412225a46f7c/)
[86 - Handling Profile Does Not Exist](../../tree/061c715c81acbfc705c50a09c9fd7860353d335e/)
[87 - Signals to Create Profile Objects](../../tree/b331593f11aa5d792f5cc1a4916bb829a12196b4/)
[88 - Save 2 Models in 1 Form and 1 View](../../tree/4a46592de493f19f0e2d1a8cb12ff154a028d805/)
[89 - ManyToManyField and Reverse Relations](../../tree/c52b4ca2b0b4d09bb34b5ba06b57440937eeb845/)
[90 - Followers and Following](../../tree/749ba392ebacf799305d4f017dc99fe69462ffc7/)
[91 - Follow Button Logic and Endpoint](../../tree/bcb308d5c132a34defc521231f6315a26317b14a/)
[92 - Profile Following Unit Tests](../../tree/eec3476bd41768d4899125b17ebd5a8d144e2c55/)
[93 - User Feed including Following](../../tree/2b76f4e9834dcd21474b286bdec4248343ecc306/)
[94 - More Effecient Backend Lookups and Custom Model Managers](../../tree/0b1f4b907bad5d4bdfb525804edefeeb626bf79b/)
[95 - More Efficient List Views with Pagination](../../tree/7c89ad7c014a7b431dba55b8986f7cc71d0c8439/)
[96 - User Profile Serializer](../../tree/d7fd9517d591f91082374ead775991e94ec4b290/)
[97 - Handling our New List View Response](../../tree/2a6f0106c1877df5d39512aa161889e17b9a502b/)
[98 - Handling Pagination in React](../../tree/0c39d7474d64966682bb642dce2befd56de17dd6/)
[99 - Display User Within Tweet](../../tree/877884675610faee2335df06c4c1cb67df5644e7/)
[100 - Display Tweet User Details](../../tree/161ff2d8a7236c20d8b9addbcc578150de09651b/)
[101 - Feed View Component](../../tree/f5e1eb899c6bd2d4f7d89b12f3d741e2e57777ed/)
[102 - Build for the Feed](../../tree/116a480560e10021bb33299c4e0fcdcc4d560752/)
[103 - User Profile API Detail](../../tree/72db184c5a6b9338eecba1c2df630812fa269faa/)
[104 - Passing the Request to Serializers](../../tree/aa9379e967c4d8feae5e577df743327a707456a5/)
[105 - Render Profile Badge Component](../../tree/cbc23c43d7eeec86c5bd0c0e0242f824bdc95b1f/)
[106 - The Follow Button](../../tree/214190819624697713aab6cc9b5da3fc70e2e8b3/)
[107 - Removing Redundant Profile View](../../tree/5ebfac71d174b4869c367c79095df554fa0ec97a/)
[108 - Display Follower Count with Numeraljs](../../tree/62f930450531e07039a650401cbb3aac852bdc37/)
[109 - FInal Build](../../tree/7ce03e49253bed9e4a55f5ab985f92b047fa736c/)
**110 - Thank you and next steps** _no code_
Next steps:
- Large File Uploads for Images ~ [Dive into AWS](https://cfe.sh/courses/aws)
- Notifications
- Direct Messages / Private Inboxes ~ [Chat x Channels](https://cfe.sh/courses/chat-channels-react)
- Explore -> parse & filter for hashtags